Module: Igniter::Extensions::Contracts

Defined in:
lib/igniter/extensions/contracts.rb,
lib/igniter/extensions/contracts/mcp_pack.rb,
lib/igniter/extensions/contracts/saga_pack.rb,
lib/igniter/extensions/contracts/audit_pack.rb,
lib/igniter/extensions/contracts/debug_pack.rb,
lib/igniter/extensions/contracts/audit/event.rb,
lib/igniter/extensions/contracts/branch_pack.rb,
lib/igniter/extensions/contracts/lookup_pack.rb,
lib/igniter/extensions/contracts/saga/result.rb,
lib/igniter/extensions/contracts/saga/runner.rb,
lib/igniter/extensions/contracts/compose_pack.rb,
lib/igniter/extensions/contracts/creator_pack.rb,
lib/igniter/extensions/contracts/debug/report.rb,
lib/igniter/extensions/contracts/journal_pack.rb,
lib/igniter/extensions/contracts/audit/builder.rb,
lib/igniter/extensions/contracts/commerce_pack.rb,
lib/igniter/extensions/contracts/creator/scope.rb,
lib/igniter/extensions/contracts/dataflow/diff.rb,
lib/igniter/extensions/contracts/dataflow_pack.rb,
lib/igniter/extensions/contracts/reactive/plan.rb,
lib/igniter/extensions/contracts/reactive_pack.rb,
lib/igniter/extensions/contracts/aggregate_pack.rb,
lib/igniter/extensions/contracts/audit/snapshot.rb,
lib/igniter/extensions/contracts/creator/report.rb,
lib/igniter/extensions/contracts/creator/wizard.rb,
lib/igniter/extensions/contracts/creator/writer.rb,
lib/igniter/extensions/contracts/reactive/event.rb,
lib/igniter/extensions/contracts/saga/formatter.rb,
lib/igniter/extensions/contracts/collection_pack.rb,
lib/igniter/extensions/contracts/creator/profile.rb,
lib/igniter/extensions/contracts/dataflow/result.rb,
lib/igniter/extensions/contracts/invariants_pack.rb,
lib/igniter/extensions/contracts/mcp/tool_result.rb,
lib/igniter/extensions/contracts/provenance_pack.rb,
lib/igniter/extensions/contracts/reactive/engine.rb,
lib/igniter/extensions/contracts/creator/scaffold.rb,
lib/igniter/extensions/contracts/creator/workflow.rb,
lib/igniter/extensions/contracts/dataflow/builder.rb,
lib/igniter/extensions/contracts/dataflow/session.rb,
lib/igniter/extensions/contracts/debug/pack_audit.rb,
lib/igniter/extensions/contracts/incremental_pack.rb,
lib/igniter/extensions/contracts/invariants/error.rb,
lib/igniter/extensions/contracts/invariants/suite.rb,
lib/igniter/extensions/contracts/reactive/builder.rb,
lib/igniter/extensions/contracts/reactive/matcher.rb,
lib/igniter/extensions/contracts/capabilities_pack.rb,
lib/igniter/extensions/contracts/differential_pack.rb,
lib/igniter/extensions/contracts/invariants/report.rb,
lib/igniter/extensions/contracts/mcp/tool_argument.rb,
lib/igniter/extensions/contracts/saga/compensation.rb,
lib/igniter/extensions/contracts/capabilities/error.rb,
lib/igniter/extensions/contracts/creator/write_step.rb,
lib/igniter/extensions/contracts/incremental/result.rb,
lib/igniter/extensions/contracts/invariants/builder.rb,
lib/igniter/extensions/contracts/provenance/builder.rb,
lib/igniter/extensions/contracts/provenance/lineage.rb,
lib/igniter/extensions/contracts/capabilities/policy.rb,
lib/igniter/extensions/contracts/capabilities/report.rb,
lib/igniter/extensions/contracts/debug/pack_snapshot.rb,
lib/igniter/extensions/contracts/differential/report.rb,
lib/igniter/extensions/contracts/differential/runner.rb,
lib/igniter/extensions/contracts/incremental/session.rb,
lib/igniter/extensions/contracts/language/scale_pack.rb,
lib/igniter/extensions/contracts/mcp/creator_session.rb,
lib/igniter/extensions/contracts/mcp/tool_definition.rb,
lib/igniter/extensions/contracts/creator/write_result.rb,
lib/igniter/extensions/contracts/dataflow/item_result.rb,
lib/igniter/extensions/contracts/invariants/invariant.rb,
lib/igniter/extensions/contracts/invariants/violation.rb,
lib/igniter/extensions/contracts/creator/workflow_step.rb,
lib/igniter/extensions/contracts/execution_report_pack.rb,
lib/igniter/extensions/contracts/incremental/formatter.rb,
lib/igniter/extensions/contracts/language/formula_pack.rb,
lib/igniter/extensions/contracts/provenance/node_trace.rb,
lib/igniter/extensions/contracts/reactive/subscription.rb,
lib/igniter/extensions/contracts/saga/compensation_set.rb,
lib/igniter/extensions/contracts/capabilities/violation.rb,
lib/igniter/extensions/contracts/dataflow/window_filter.rb,
lib/igniter/extensions/contracts/debug/profile_snapshot.rb,
lib/igniter/extensions/contracts/differential/formatter.rb,
lib/igniter/extensions/contracts/incremental/node_state.rb,
lib/igniter/extensions/contracts/content_addressing_pack.rb,
lib/igniter/extensions/contracts/differential/divergence.rb,
lib/igniter/extensions/contracts/invariants/cases_report.rb,
lib/igniter/extensions/contracts/language/piecewise_pack.rb,
lib/igniter/extensions/contracts/capabilities/declaration.rb,
lib/igniter/extensions/contracts/content_addressing/cache.rb,
lib/igniter/extensions/contracts/dataflow/aggregate_state.rb,
lib/igniter/extensions/contracts/reactive/dispatch_result.rb,
lib/igniter/extensions/contracts/saga/compensation_record.rb,
lib/igniter/extensions/contracts/provenance/text_formatter.rb,
lib/igniter/extensions/contracts/dataflow/collection_result.rb,
lib/igniter/extensions/contracts/dataflow/aggregate_operators.rb,
lib/igniter/extensions/contracts/content_addressing/content_key.rb,
lib/igniter/extensions/contracts/content_addressing/declaration.rb

Defined Under Namespace

Modules: AggregatePack, Audit, AuditPack, BranchPack, Capabilities, CapabilitiesPack, CollectionPack, CommercePack, ComposePack, ContentAddressing, ContentAddressingPack, Creator, CreatorPack, Dataflow, DataflowPack, Debug, DebugPack, Differential, DifferentialPack, ExecutionReportPack, Incremental, IncrementalPack, Invariants, InvariantsPack, JournalPack, Language, LookupPack, Mcp, McpPack, Provenance, ProvenancePack, Reactive, ReactivePack, Saga, SagaPack

Constant Summary collapse

DEFAULT_PACKS =
[
  ExecutionReportPack,
  LookupPack
].freeze
AVAILABLE_PACKS =
(
  DEFAULT_PACKS +
  [AggregatePack, AuditPack, BranchPack, CapabilitiesPack, CollectionPack, CommercePack, ComposePack,
   ContentAddressingPack, CreatorPack, DataflowPack, DebugPack, DifferentialPack, IncrementalPack,
   InvariantsPack, JournalPack, Language::FormulaPack, Language::PiecewisePack, Language::ScalePack,
   McpPack, ProvenancePack, ReactivePack, SagaPack]
).freeze
PRESETS =
{
  default: DEFAULT_PACKS,
  commerce: [ExecutionReportPack, CommercePack]
}.freeze

Class Method Summary collapse

Class Method Details

.audit_pack(pack, target = nil) ⇒ Object



268
269
270
271
272
273
274
275
276
277
278
# File 'lib/igniter/extensions/contracts.rb', line 268

def audit_pack(pack, target = nil)
  profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  DebugPack.audit(pack, profile: profile)
end

.audit_report(environment, inputs: nil, compiled_graph: nil, &block) ⇒ Object



156
157
158
# File 'lib/igniter/extensions/contracts.rb', line 156

def audit_report(environment, inputs: nil, compiled_graph: nil, &block)
  AuditPack.report(environment, inputs: inputs, compiled_graph: compiled_graph, &block)
end

.audit_snapshot(result) ⇒ Object



152
153
154
# File 'lib/igniter/extensions/contracts.rb', line 152

def audit_snapshot(result)
  AuditPack.snapshot(result)
end

.available_packsObject



55
56
57
# File 'lib/igniter/extensions/contracts.rb', line 55

def available_packs
  AVAILABLE_PACKS
end

.build_compensations(&block) ⇒ Object



93
94
95
# File 'lib/igniter/extensions/contracts.rb', line 93

def build_compensations(&block)
  SagaPack.build(&block)
end

.build_dataflow_session(environment, source:, key:, window: nil, context: [], &block) ⇒ Object



111
112
113
114
115
116
117
118
119
120
# File 'lib/igniter/extensions/contracts.rb', line 111

def build_dataflow_session(environment, source:, key:, window: nil, context: [], &block)
  DataflowPack.session(
    environment,
    source: source,
    key: key,
    window: window,
    context: context,
    &block
  )
end

.build_incremental_session(environment, compiled_graph: nil, &block) ⇒ Object



107
108
109
# File 'lib/igniter/extensions/contracts.rb', line 107

def build_incremental_session(environment, compiled_graph: nil, &block)
  IncrementalPack.session(environment, compiled_graph: compiled_graph, &block)
end

.build_invariants(&block) ⇒ Object



176
177
178
# File 'lib/igniter/extensions/contracts.rb', line 176

def build_invariants(&block)
  InvariantsPack.build(&block)
end

.build_preset_profile(name) ⇒ Object



77
78
79
# File 'lib/igniter/extensions/contracts.rb', line 77

def build_preset_profile(name)
  build_profile(*packs_for(name))
end

.build_profile(*packs) ⇒ Object



69
70
71
# File 'lib/igniter/extensions/contracts.rb', line 69

def build_profile(*packs)
  Igniter::Contracts.build_profile(*normalize_packs(packs))
end

.build_reactions(&block) ⇒ Object



160
161
162
# File 'lib/igniter/extensions/contracts.rb', line 160

def build_reactions(&block)
  ReactivePack.build(&block)
end

.capabilities_for(compiled_graph, node_name) ⇒ Object



214
215
216
# File 'lib/igniter/extensions/contracts.rb', line 214

def capabilities_for(compiled_graph, node_name)
  CapabilitiesPack.capabilities_for(compiled_graph, node_name)
end

.capability_policy(denied: [], required: [], on_undeclared: :ignore) ⇒ Object



206
207
208
# File 'lib/igniter/extensions/contracts.rb', line 206

def capability_policy(denied: [], required: [], on_undeclared: :ignore)
  CapabilitiesPack.policy(denied: denied, required: required, on_undeclared: on_undeclared)
end

.capability_report(compiled_graph, profile: nil, policy: nil) ⇒ Object



223
224
225
# File 'lib/igniter/extensions/contracts.rb', line 223

def capability_report(compiled_graph, profile: nil, policy: nil)
  CapabilitiesPack.report(compiled_graph, profile: profile, policy: policy)
end

.check_capabilities!(compiled_graph, policy:, profile: nil) ⇒ Object



227
228
229
# File 'lib/igniter/extensions/contracts.rb', line 227

def check_capabilities!(compiled_graph, policy:, profile: nil)
  CapabilitiesPack.check!(compiled_graph, profile: profile, policy: policy)
end

.check_invariants(target, invariants:) ⇒ Object



180
181
182
# File 'lib/igniter/extensions/contracts.rb', line 180

def check_invariants(target, invariants:)
  InvariantsPack.check(target, invariants: invariants)
end

.compare_differential(inputs:, primary_environment: nil, primary_compiled_graph: nil, primary_result: nil, candidate_environment: nil, candidate_compiled_graph: nil, candidate_result: nil, tolerance: nil, primary_name: "primary", candidate_name: "candidate") ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/igniter/extensions/contracts.rb', line 122

def compare_differential(
  inputs:,
  primary_environment: nil,
  primary_compiled_graph: nil,
  primary_result: nil,
  candidate_environment: nil,
  candidate_compiled_graph: nil,
  candidate_result: nil,
  tolerance: nil,
  primary_name: "primary",
  candidate_name: "candidate"
)
  DifferentialPack.compare(
    inputs: inputs,
    primary_environment: primary_environment,
    primary_compiled_graph: primary_compiled_graph,
    primary_result: primary_result,
    candidate_environment: candidate_environment,
    candidate_compiled_graph: candidate_compiled_graph,
    candidate_result: candidate_result,
    tolerance: tolerance,
    primary_name: primary_name,
    candidate_name: candidate_name
  )
end

.content_addressed(callable: nil, fingerprint: nil, capabilities: [:pure], cache: ContentAddressingPack.cache, &block) ⇒ Object



231
232
233
234
235
236
237
238
239
240
# File 'lib/igniter/extensions/contracts.rb', line 231

def content_addressed(callable: nil, fingerprint: nil, capabilities: [:pure],
                      cache: ContentAddressingPack.cache, &block)
  ContentAddressingPack.content_addressed(
    callable: callable,
    fingerprint: fingerprint,
    capabilities: capabilities,
    cache: cache,
    &block
  )
end

.content_cacheObject



250
251
252
# File 'lib/igniter/extensions/contracts.rb', line 250

def content_cache
  ContentAddressingPack.cache
end

.content_key(inputs:, fingerprint: nil, callable: nil) ⇒ Object



246
247
248
# File 'lib/igniter/extensions/contracts.rb', line 246

def content_key(inputs:, fingerprint: nil, callable: nil)
  ContentAddressingPack.content_key(fingerprint: fingerprint, callable: callable, inputs: inputs)
end

.creator_profilesObject



280
281
282
# File 'lib/igniter/extensions/contracts.rb', line 280

def creator_profiles
  CreatorPack.available_profiles
end

.creator_report(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: :monorepo_package, pack: nil, target: nil) ⇒ Object



300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
# File 'lib/igniter/extensions/contracts.rb', line 300

def creator_report(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil,
                   scope: :monorepo_package, pack: nil, target: nil)
  runtime_profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  CreatorPack.report(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope,
    pack: pack,
    target_profile: runtime_profile
  )
end

.creator_scopesObject



284
285
286
# File 'lib/igniter/extensions/contracts.rb', line 284

def creator_scopes
  CreatorPack.available_scopes
end

.creator_wizard(name: nil, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: nil, root: nil, mode: :skip_existing, pack: nil, target: nil) ⇒ Object



344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
# File 'lib/igniter/extensions/contracts.rb', line 344

def creator_wizard(name: nil, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil,
                   scope: nil, root: nil, mode: :skip_existing, pack: nil, target: nil)
  runtime_profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  CreatorPack.wizard(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope,
    root: root,
    mode: mode,
    pack: pack,
    target_profile: runtime_profile
  )
end

.creator_workflow(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: :monorepo_package, pack: nil, target: nil) ⇒ Object



322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'lib/igniter/extensions/contracts.rb', line 322

def creator_workflow(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil,
                     scope: :monorepo_package, pack: nil, target: nil)
  runtime_profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  CreatorPack.workflow(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope,
    pack: pack,
    target_profile: runtime_profile
  )
end

.creator_writer(name:, root:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: :monorepo_package, pack: nil, target: nil, mode: :skip_existing) ⇒ Object



368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
# File 'lib/igniter/extensions/contracts.rb', line 368

def creator_writer(name:, root:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil,
                   scope: :monorepo_package, pack: nil, target: nil, mode: :skip_existing)
  runtime_profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  CreatorPack.writer(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope,
    pack: pack,
    target_profile: runtime_profile,
    root: root,
    mode: mode
  )
end

.debug_pack(pack_or_name, target) ⇒ Object



263
264
265
266
# File 'lib/igniter/extensions/contracts.rb', line 263

def debug_pack(pack_or_name, target)
  profile = target.respond_to?(:profile) ? target.profile : target
  DebugPack.pack_snapshot(pack_or_name, profile: profile)
end

.debug_profile(target) ⇒ Object



258
259
260
261
# File 'lib/igniter/extensions/contracts.rb', line 258

def debug_profile(target)
  profile = target.respond_to?(:profile) ? target.profile : target
  DebugPack.profile_snapshot(profile)
end

.debug_report(environment, inputs: nil, compiled_graph: nil, &block) ⇒ Object



432
433
434
# File 'lib/igniter/extensions/contracts.rb', line 432

def debug_report(environment, inputs: nil, compiled_graph: nil, &block)
  DebugPack.report(environment, inputs: inputs, compiled_graph: compiled_graph, &block)
end

.debug_snapshot(result, profile:) ⇒ Object



428
429
430
# File 'lib/igniter/extensions/contracts.rb', line 428

def debug_snapshot(result, profile:)
  DebugPack.snapshot(result, profile: profile)
end

.declare_capabilities(*capabilities, callable: nil, &block) ⇒ Object



198
199
200
# File 'lib/igniter/extensions/contracts.rb', line 198

def declare_capabilities(*capabilities, callable: nil, &block)
  CapabilitiesPack.declare(*capabilities, callable: callable, &block)
end

.default_packsObject



51
52
53
# File 'lib/igniter/extensions/contracts.rb', line 51

def default_packs
  DEFAULT_PACKS
end

.dispatch_reactive(target, reactions:) ⇒ Object



164
165
166
# File 'lib/igniter/extensions/contracts.rb', line 164

def dispatch_reactive(target, reactions:)
  ReactivePack.dispatch(target, reactions: reactions)
end

.explain(result, output_name) ⇒ Object



89
90
91
# File 'lib/igniter/extensions/contracts.rb', line 89

def explain(result, output_name)
  ProvenancePack.explain(result, output_name)
end

.lineage(result, output_name) ⇒ Object



85
86
87
# File 'lib/igniter/extensions/contracts.rb', line 85

def lineage(result, output_name)
  ProvenancePack.lineage(result, output_name)
end

.mcp_call(tool_name, target: nil, **arguments, &block) ⇒ Object



420
421
422
# File 'lib/igniter/extensions/contracts.rb', line 420

def mcp_call(tool_name, target: nil, **arguments, &block)
  McpPack.call(tool_name, target: target, **arguments, &block)
end

.mcp_creator_session(target: nil, **arguments) ⇒ Object



424
425
426
# File 'lib/igniter/extensions/contracts.rb', line 424

def mcp_creator_session(target: nil, **arguments)
  mcp_call(:creator_session_start, target: target, **arguments)
end

.mcp_toolsObject



416
417
418
# File 'lib/igniter/extensions/contracts.rb', line 416

def mcp_tools
  McpPack.tool_catalog
end

.packs_for(name) ⇒ Object



63
64
65
66
67
# File 'lib/igniter/extensions/contracts.rb', line 63

def packs_for(name)
  presets.fetch(name.to_sym)
rescue KeyError
  raise ArgumentError, "unknown contracts preset #{name}"
end

.presetsObject



59
60
61
# File 'lib/igniter/extensions/contracts.rb', line 59

def presets
  PRESETS
end

.profile_capabilities(profile_or_environment) ⇒ Object



218
219
220
221
# File 'lib/igniter/extensions/contracts.rb', line 218

def profile_capabilities(profile_or_environment)
  profile = profile_or_environment.respond_to?(:profile) ? profile_or_environment.profile : profile_or_environment
  CapabilitiesPack.profile_capabilities(profile)
end

.pure_callable(callable: nil, &block) ⇒ Object



202
203
204
# File 'lib/igniter/extensions/contracts.rb', line 202

def pure_callable(callable: nil, &block)
  CapabilitiesPack.pure(callable: callable, &block)
end

.pure_content_callable(callable: nil, fingerprint: nil, cache: ContentAddressingPack.cache, &block) ⇒ Object



242
243
244
# File 'lib/igniter/extensions/contracts.rb', line 242

def pure_content_callable(callable: nil, fingerprint: nil, cache: ContentAddressingPack.cache, &block)
  ContentAddressingPack.pure(callable: callable, fingerprint: fingerprint, cache: cache, &block)
end

.required_capabilities(compiled_graph) ⇒ Object



210
211
212
# File 'lib/igniter/extensions/contracts.rb', line 210

def required_capabilities(compiled_graph)
  CapabilitiesPack.required_capabilities(compiled_graph)
end

.reset_content_cache!Object



254
255
256
# File 'lib/igniter/extensions/contracts.rb', line 254

def reset_content_cache!
  ContentAddressingPack.reset_cache!
end

.run_incremental_reactive(session, inputs:, reactions:) ⇒ Object



172
173
174
# File 'lib/igniter/extensions/contracts.rb', line 172

def run_incremental_reactive(session, inputs:, reactions:)
  ReactivePack.run_incremental(session, inputs: inputs, reactions: reactions)
end

.run_invariants(environment, inputs:, invariants:, compiled_graph: nil, &block) ⇒ Object



188
189
190
191
# File 'lib/igniter/extensions/contracts.rb', line 188

def run_invariants(environment, inputs:, invariants:, compiled_graph: nil, &block)
  InvariantsPack.run(environment, inputs: inputs, invariants: invariants, compiled_graph: compiled_graph,
                     &block)
end

.run_reactive(environment, inputs:, reactions:, compiled_graph: nil, &block) ⇒ Object



168
169
170
# File 'lib/igniter/extensions/contracts.rb', line 168

def run_reactive(environment, inputs:, reactions:, compiled_graph: nil, &block)
  ReactivePack.run(environment, inputs: inputs, reactions: reactions, compiled_graph: compiled_graph, &block)
end

.run_saga(environment, inputs:, compensations:, compiled_graph: nil, &block) ⇒ Object



97
98
99
100
101
102
103
104
105
# File 'lib/igniter/extensions/contracts.rb', line 97

def run_saga(environment, inputs:, compensations:, compiled_graph: nil, &block)
  SagaPack.run(
    environment,
    inputs: inputs,
    compensations: compensations,
    compiled_graph: compiled_graph,
    &block
  )
end

.scaffold_pack(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: :monorepo_package) ⇒ Object



288
289
290
291
292
293
294
295
296
297
298
# File 'lib/igniter/extensions/contracts.rb', line 288

def scaffold_pack(name:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil,
                  scope: :monorepo_package)
  CreatorPack.scaffold(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope
  )
end

.shadow_differential(**arguments) ⇒ Object



148
149
150
# File 'lib/igniter/extensions/contracts.rb', line 148

def shadow_differential(**arguments)
  DifferentialPack.shadow(**arguments)
end

.validate_invariants!(target, invariants:) ⇒ Object



184
185
186
# File 'lib/igniter/extensions/contracts.rb', line 184

def validate_invariants!(target, invariants:)
  InvariantsPack.validate!(target, invariants: invariants)
end

.verify_invariant_cases(environment, cases:, invariants:, compiled_graph: nil, &block) ⇒ Object



193
194
195
196
# File 'lib/igniter/extensions/contracts.rb', line 193

def verify_invariant_cases(environment, cases:, invariants:, compiled_graph: nil, &block)
  InvariantsPack.verify_cases(environment,
                              cases: cases, invariants: invariants, compiled_graph: compiled_graph, &block)
end

.with(*packs) ⇒ Object



73
74
75
# File 'lib/igniter/extensions/contracts.rb', line 73

def with(*packs)
  Igniter::Contracts.with(*normalize_packs(packs))
end

.with_preset(name) ⇒ Object



81
82
83
# File 'lib/igniter/extensions/contracts.rb', line 81

def with_preset(name)
  with(*packs_for(name))
end

.write_pack_scaffold(name:, root:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil, capabilities: nil, scope: :monorepo_package, pack: nil, target: nil, mode: :skip_existing) ⇒ Object



392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
# File 'lib/igniter/extensions/contracts.rb', line 392

def write_pack_scaffold(name:, root:, kind: nil, namespace: "MyCompany::IgniterPacks", profile: nil,
                        capabilities: nil, scope: :monorepo_package, pack: nil, target: nil, mode: :skip_existing)
  runtime_profile =
    case target
    when nil
      nil
    else
      target.respond_to?(:profile) ? target.profile : target
    end

  CreatorPack.write(
    name: name,
    kind: kind,
    namespace: namespace,
    profile: profile,
    capabilities: capabilities,
    scope: scope,
    pack: pack,
    target_profile: runtime_profile,
    root: root,
    mode: mode
  )
end