artifact-contracts 0.33.4 → 0.33.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/cli-contract.yaml +126 -0
- package/dist/agents/orchestrator.js +1 -1
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/artifact-contracts.bundle.mjs +529 -187
- package/dist/artifact-contracts.bundle.mjs.map +4 -4
- package/dist/cli/discover.d.ts +12 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +208 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +2 -2
- package/dist/generated/contract.js.map +1 -1
- package/dist/generated/dsl/agents.d.ts +1 -0
- package/dist/generated/dsl/agents.d.ts.map +1 -1
- package/dist/generated/dsl/agents.js +35 -0
- package/dist/generated/dsl/agents.js.map +1 -1
- package/dist/generated/dsl/dsl-data.d.ts.map +1 -1
- package/dist/generated/dsl/dsl-data.js +190 -1
- package/dist/generated/dsl/dsl-data.js.map +1 -1
- package/dist/generated/dsl/handoffs.d.ts +146 -12
- package/dist/generated/dsl/handoffs.d.ts.map +1 -1
- package/dist/generated/dsl/handoffs.js +41 -0
- package/dist/generated/dsl/handoffs.js.map +1 -1
- package/dist/generated/dsl/tasks.d.ts +1 -0
- package/dist/generated/dsl/tasks.d.ts.map +1 -1
- package/dist/generated/dsl/tasks.js +18 -0
- package/dist/generated/dsl/tasks.js.map +1 -1
- package/dist/generated/dsl/workflows.d.ts +1 -0
- package/dist/generated/dsl/workflows.d.ts.map +1 -1
- package/dist/generated/dsl/workflows.js +19 -0
- package/dist/generated/dsl/workflows.js.map +1 -1
- package/dist/generated/policy.d.ts +49 -0
- package/dist/generated/policy.d.ts.map +1 -1
- package/dist/generated/policy.js +71 -0
- package/dist/generated/policy.js.map +1 -1
- package/dist/generated/program.d.ts +10 -0
- package/dist/generated/program.d.ts.map +1 -1
- package/dist/generated/program.js +28 -2
- package/dist/generated/program.js.map +1 -1
- package/dist/generated/schemas.d.ts +58 -0
- package/dist/generated/schemas.d.ts.map +1 -1
- package/dist/generated/schemas.js +70 -0
- package/dist/generated/schemas.js.map +1 -1
- package/dist/generated/types.d.ts +36 -0
- package/dist/generated/types.d.ts.map +1 -1
- package/docs/cli-reference.md +60 -0
- package/package.json +1 -1
- package/schemas/2026B.config.json +47 -0
- package/schemas/2026B.json +165 -0
package/README.md
CHANGED
|
@@ -154,6 +154,46 @@ documentation:
|
|
|
154
154
|
# expands to: ["docs/**/*.md", "packages/*/README.md"]
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
+
### Trace Link Rules
|
|
158
|
+
|
|
159
|
+
The optional `trace` section declares traceability links between artifacts — how one artifact connects to or derives from another.
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
trace:
|
|
163
|
+
links:
|
|
164
|
+
- id: contract-to-generated
|
|
165
|
+
from: cli-contract-definition
|
|
166
|
+
to: generated-cli
|
|
167
|
+
resolver: codegen
|
|
168
|
+
description: "CLI contract generates TypeScript scaffolding"
|
|
169
|
+
- id: source-to-tests
|
|
170
|
+
from: core-library
|
|
171
|
+
to: test-suite
|
|
172
|
+
resolver: naming
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
| Field | Required | Description |
|
|
176
|
+
|-------|----------|-------------|
|
|
177
|
+
| `id` | Yes | Unique link identifier (kebab-case) |
|
|
178
|
+
| `from` | Yes | Source artifact ID (must exist in `artifacts`) |
|
|
179
|
+
| `to` | Yes | Target artifact ID (must exist in `artifacts`) |
|
|
180
|
+
| `resolver` | Yes | Link resolution strategy |
|
|
181
|
+
| `description` | No | Human-readable explanation |
|
|
182
|
+
|
|
183
|
+
**Resolver types:**
|
|
184
|
+
|
|
185
|
+
| Resolver | Use case |
|
|
186
|
+
|----------|----------|
|
|
187
|
+
| `operationId` | ID-based matching (e.g., CLI contract operationId → generated handler) |
|
|
188
|
+
| `ast` | Import/call resolution via AST analysis |
|
|
189
|
+
| `naming` | Naming convention (e.g., `foo.ts` → `foo.test.ts`) |
|
|
190
|
+
| `codegen` | Codegen pipeline (e.g., DSL YAML → generated TypeScript) |
|
|
191
|
+
|
|
192
|
+
Validation rules:
|
|
193
|
+
- `from` and `to` must reference existing artifact IDs
|
|
194
|
+
- Link `id` values must be unique
|
|
195
|
+
- Self-links (`from === to`) are rejected
|
|
196
|
+
|
|
157
197
|
## Commands
|
|
158
198
|
|
|
159
199
|
### Deterministic Commands
|
package/cli-contract.yaml
CHANGED
|
@@ -316,6 +316,92 @@ command_sets:
|
|
|
316
316
|
"12":
|
|
317
317
|
description: Adapter initialization error (missing API key, etc.)
|
|
318
318
|
|
|
319
|
+
discover:
|
|
320
|
+
summary: LLM-based artifact discovery from project file structure
|
|
321
|
+
description: >-
|
|
322
|
+
Analyzes the project file structure using LLM to generate or update
|
|
323
|
+
artifact-contracts.yaml definitions. In init mode (no existing file),
|
|
324
|
+
creates a new registry from scratch. In update mode (existing file),
|
|
325
|
+
proposes additional artifact definitions and trace link rules for
|
|
326
|
+
uncovered files.
|
|
327
|
+
options:
|
|
328
|
+
- name: adapter
|
|
329
|
+
description: LLM adapter to use
|
|
330
|
+
schema:
|
|
331
|
+
type: string
|
|
332
|
+
enum: [mock, openai, claude, gemini]
|
|
333
|
+
- name: model
|
|
334
|
+
description: Model name to pass to the adapter
|
|
335
|
+
- name: show-prompt
|
|
336
|
+
description: Output the constructed prompt without calling the LLM API
|
|
337
|
+
schema:
|
|
338
|
+
type: boolean
|
|
339
|
+
- name: dry-run
|
|
340
|
+
aliases: [n]
|
|
341
|
+
description: Alias for --show-prompt (output prompt without LLM call)
|
|
342
|
+
schema:
|
|
343
|
+
type: boolean
|
|
344
|
+
- name: write
|
|
345
|
+
aliases: [w]
|
|
346
|
+
description: Write the generated YAML directly to artifact-contracts.yaml
|
|
347
|
+
schema:
|
|
348
|
+
type: boolean
|
|
349
|
+
- name: output
|
|
350
|
+
aliases: [o]
|
|
351
|
+
description: Write result to a specific file path instead of stdout
|
|
352
|
+
value_name: file
|
|
353
|
+
- name: report-format
|
|
354
|
+
description: "Output format (default: yaml)"
|
|
355
|
+
schema:
|
|
356
|
+
type: string
|
|
357
|
+
enum: [yaml, json]
|
|
358
|
+
- name: log-file
|
|
359
|
+
aliases: [l]
|
|
360
|
+
description: Write agent progress log to this file path.
|
|
361
|
+
schema:
|
|
362
|
+
type: string
|
|
363
|
+
effects:
|
|
364
|
+
risk_level: medium
|
|
365
|
+
reads:
|
|
366
|
+
- artifact-definitions
|
|
367
|
+
- repository-files
|
|
368
|
+
writes:
|
|
369
|
+
- artifact-definitions
|
|
370
|
+
network:
|
|
371
|
+
description: LLM API calls to configured provider
|
|
372
|
+
idempotent: false
|
|
373
|
+
execution_mode: normal
|
|
374
|
+
stdout:
|
|
375
|
+
schema:
|
|
376
|
+
$ref: "#/components/schemas/DiscoverResult"
|
|
377
|
+
description: >-
|
|
378
|
+
Generated artifact-contracts.yaml content or structured discovery result.
|
|
379
|
+
x-agent:
|
|
380
|
+
dslTask: discover-artifact-definitions
|
|
381
|
+
riskLevel: low
|
|
382
|
+
requiresConfirmation: false
|
|
383
|
+
idempotent: true
|
|
384
|
+
sideEffects: [network]
|
|
385
|
+
sideEffectNote: >-
|
|
386
|
+
Makes network calls to the configured LLM provider when adapter is
|
|
387
|
+
not mock. Filesystem write only when --write or --output is specified.
|
|
388
|
+
safeDryRunOption: show-prompt
|
|
389
|
+
expectedDurationMs: 120000
|
|
390
|
+
retryableExitCodes: [1, 12]
|
|
391
|
+
recommendedBeforeUse:
|
|
392
|
+
- "Run with --show-prompt first to preview the prompt"
|
|
393
|
+
exits:
|
|
394
|
+
"0":
|
|
395
|
+
description: Discovery completed successfully
|
|
396
|
+
"1":
|
|
397
|
+
description: General / transient error
|
|
398
|
+
"3":
|
|
399
|
+
description: File system read error
|
|
400
|
+
"11":
|
|
401
|
+
description: agent-contracts-runtime is not installed
|
|
402
|
+
"12":
|
|
403
|
+
description: Adapter initialization error (missing API key, etc.)
|
|
404
|
+
|
|
319
405
|
# ── agents ──────────────────────────────────────────
|
|
320
406
|
agents:
|
|
321
407
|
summary: Output the full resolved agent DSL as structured data.
|
|
@@ -539,6 +625,46 @@ components:
|
|
|
539
625
|
additionalProperties:
|
|
540
626
|
$ref: "#/components/schemas/ArtifactDefinition"
|
|
541
627
|
|
|
628
|
+
DiscoverResult:
|
|
629
|
+
type: object
|
|
630
|
+
description: Output of the discover command
|
|
631
|
+
properties:
|
|
632
|
+
mode:
|
|
633
|
+
type: string
|
|
634
|
+
enum: [init, update]
|
|
635
|
+
artifact_contracts_yaml:
|
|
636
|
+
type: string
|
|
637
|
+
description: Generated YAML content
|
|
638
|
+
decisions:
|
|
639
|
+
type: array
|
|
640
|
+
items:
|
|
641
|
+
type: object
|
|
642
|
+
properties:
|
|
643
|
+
artifact_id:
|
|
644
|
+
type: string
|
|
645
|
+
reasoning:
|
|
646
|
+
type: string
|
|
647
|
+
required: [artifact_id, reasoning]
|
|
648
|
+
trace_decisions:
|
|
649
|
+
type: array
|
|
650
|
+
items:
|
|
651
|
+
type: object
|
|
652
|
+
properties:
|
|
653
|
+
link_id:
|
|
654
|
+
type: string
|
|
655
|
+
reasoning:
|
|
656
|
+
type: string
|
|
657
|
+
required: [link_id, reasoning]
|
|
658
|
+
uncategorized_files:
|
|
659
|
+
type: array
|
|
660
|
+
items:
|
|
661
|
+
type: string
|
|
662
|
+
suggestions:
|
|
663
|
+
type: array
|
|
664
|
+
items:
|
|
665
|
+
type: string
|
|
666
|
+
required: [mode, artifact_contracts_yaml]
|
|
667
|
+
|
|
542
668
|
ValidationResult:
|
|
543
669
|
type: object
|
|
544
670
|
description: Output of the validate command (json format, on error)
|
|
@@ -35,7 +35,7 @@ export async function runAgentTask(userRequest, taskId, auditConfig, options) {
|
|
|
35
35
|
}
|
|
36
36
|
const ctx = await loadDslContext({
|
|
37
37
|
embeddedDsl: resolvedDsl,
|
|
38
|
-
requiredEntities: { tasks: [
|
|
38
|
+
requiredEntities: { tasks: [taskId] },
|
|
39
39
|
});
|
|
40
40
|
const adapterName = auditConfig.adapter ?? "mock";
|
|
41
41
|
let adapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,MAAc,EACd,WAAwB,EACxB,OAAqB;IAErB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,MAAM;YACN,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;SACf,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7D,8DAA8D;IAC9D,IAAI,OAAyC,CAAC;IAC9C,8DAA8D;IAC9D,IAAI,cAAgD,CAAC;IACrD,8DAA8D;IAC9D,IAAI,kBAA6F,CAAC;IAElG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QACxC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,4CAA4C;YAC1C,2EAA2E;YAC3E,uCAAuC,CAC1C,EACD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC;QAC/B,WAAW,EAAE,WAAW;QACxB,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,4BAA4B,GAAG,+BAA+B,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|