@open-mercato/cli 0.6.7-develop.6706.1.b3a4c759bb → 0.6.7-develop.6725.1.07a748cfc2
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/dist/agentic/guides/module-facts.json +108 -108
- package/dist/agentic/guides/modules/ai_assistant.md +1 -1
- package/dist/agentic/guides/modules/api_docs.md +1 -1
- package/dist/agentic/guides/modules/api_keys.md +1 -1
- package/dist/agentic/guides/modules/attachments.md +1 -1
- package/dist/agentic/guides/modules/audit_logs.md +1 -1
- package/dist/agentic/guides/modules/auth.md +1 -1
- package/dist/agentic/guides/modules/business_rules.md +1 -1
- package/dist/agentic/guides/modules/catalog.md +1 -1
- package/dist/agentic/guides/modules/channel_gmail.md +1 -1
- package/dist/agentic/guides/modules/channel_imap.md +1 -1
- package/dist/agentic/guides/modules/checkout.md +1 -1
- package/dist/agentic/guides/modules/communication_channels.md +1 -1
- package/dist/agentic/guides/modules/configs.md +1 -1
- package/dist/agentic/guides/modules/content.md +1 -1
- package/dist/agentic/guides/modules/currencies.md +1 -1
- package/dist/agentic/guides/modules/customer_accounts.md +1 -1
- package/dist/agentic/guides/modules/customers.md +1 -1
- package/dist/agentic/guides/modules/dashboards.md +1 -1
- package/dist/agentic/guides/modules/data_sync.md +1 -1
- package/dist/agentic/guides/modules/dictionaries.md +1 -1
- package/dist/agentic/guides/modules/directory.md +1 -1
- package/dist/agentic/guides/modules/entities.md +1 -1
- package/dist/agentic/guides/modules/events.md +1 -1
- package/dist/agentic/guides/modules/feature_toggles.md +1 -1
- package/dist/agentic/guides/modules/gateway_stripe.md +1 -1
- package/dist/agentic/guides/modules/generators.md +1 -1
- package/dist/agentic/guides/modules/inbox_ops.md +1 -1
- package/dist/agentic/guides/modules/integrations.md +1 -1
- package/dist/agentic/guides/modules/messages.md +1 -1
- package/dist/agentic/guides/modules/notifications.md +1 -1
- package/dist/agentic/guides/modules/onboarding.md +1 -1
- package/dist/agentic/guides/modules/payment_gateways.md +1 -1
- package/dist/agentic/guides/modules/perspectives.md +1 -1
- package/dist/agentic/guides/modules/planner.md +1 -1
- package/dist/agentic/guides/modules/portal.md +1 -1
- package/dist/agentic/guides/modules/progress.md +1 -1
- package/dist/agentic/guides/modules/query_index.md +1 -1
- package/dist/agentic/guides/modules/record_locks.md +1 -1
- package/dist/agentic/guides/modules/resources.md +1 -1
- package/dist/agentic/guides/modules/sales.md +1 -1
- package/dist/agentic/guides/modules/scheduler.md +1 -1
- package/dist/agentic/guides/modules/search.md +1 -1
- package/dist/agentic/guides/modules/security.md +1 -1
- package/dist/agentic/guides/modules/shipping_carriers.md +1 -1
- package/dist/agentic/guides/modules/sso.md +1 -1
- package/dist/agentic/guides/modules/staff.md +1 -1
- package/dist/agentic/guides/modules/storage_s3.md +1 -1
- package/dist/agentic/guides/modules/sync_akeneo.md +1 -1
- package/dist/agentic/guides/modules/sync_excel.md +1 -1
- package/dist/agentic/guides/modules/system_status_overlays.md +1 -1
- package/dist/agentic/guides/modules/translations.md +1 -1
- package/dist/agentic/guides/modules/webhooks.md +1 -1
- package/dist/agentic/guides/modules/wms.md +1 -1
- package/dist/agentic/guides/modules/workflows.md +1 -1
- package/dist/agentic/guides/spec-delivery.md +1 -1
- package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +2 -1
- package/dist/agentic/guides/upstream/manifest.json +2 -2
- package/dist/agentic/shared/ai/harness/README.md +2 -2
- package/dist/agentic/shared/ai/harness/RELEASE.md +4 -4
- package/dist/agentic/shared/ai/harness/cases.json +32 -13
- package/dist/agentic/shared/ai/harness/cases.schema.json +4 -4
- package/dist/agentic/shared/ai/harness/generated-code-review-policy.md +2 -1
- package/dist/agentic/shared/ai/harness/validators.json +1 -1
- package/dist/agentic/shared/ai/harness/writable-ast-oracles.mjs +160 -2
- package/dist/agentic/shared/ai/review-checklist.md +1 -1
- package/dist/agentic/shared/ai/skills/om-evolve-harness/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-template.md +15 -4
- package/dist/agentic/shared/ai/skills/om-implement-spec/SKILL.md +23 -7
- package/dist/agentic/shared/ai/skills/om-implement-spec/references/phases-and-gates.md +1 -1
- package/dist/agentic/shared/ai/skills/om-implement-spec/references/planning-and-progress.md +40 -0
- package/dist/agentic/shared/ai/skills/om-implement-spec/references/report-templates.md +27 -0
- package/dist/agentic/shared/ai/skills/om-implement-spec/references/spec-resolution.md +24 -0
- package/dist/agentic/shared/ai/specs/README.md +1 -1
- package/dist/agentic/shared/scripts/evaluate-agent-harness.mjs +18 -0
- package/package.json +5 -5
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Spec Resolution
|
|
2
|
+
|
|
3
|
+
Resolve the user's reference before readiness analysis or planning. The first unambiguous match wins.
|
|
4
|
+
|
|
5
|
+
1. **Path** — use an existing repository-relative Markdown file directly.
|
|
6
|
+
2. **Name/title** — search the configured specs directory (`paths.specs`, default `.ai/specs`) case-insensitively by filename with or without its date prefix/extension, then by the document's first `# Title`. Use the newest dated file only when the title match is unambiguous.
|
|
7
|
+
3. **Issue** — for a numeric reference and an available configured tracker, use its read-only issue operation and scan the body/comments for repository-relative spec paths. Do not mutate the issue.
|
|
8
|
+
4. **Spec PR** — when the numeric issue lookup does not resolve a spec, use the tracker's read-only PR operation. Accept a spec path only when that file is already present locally. Do not fetch, check out, update, or implement on a spec PR branch; ask the user to materialize/merge it locally or use `om-auto-implement-spec` for PR delivery.
|
|
9
|
+
|
|
10
|
+
Record the repository-relative path as `SPEC_PATH`. Validate that the file has an `## Implementation Plan` or `## Phasing` section. A found spec without one returns to `om-spec-writing` as not implementation-ready.
|
|
11
|
+
|
|
12
|
+
If several candidates remain, stop and let the user select one. If no candidate exists, report:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Status: blocked
|
|
16
|
+
Spec not found for "{spec}".
|
|
17
|
+
Searched: path, configured specs-directory name/title match, and read-only issue/spec-PR references when a tracker was available.
|
|
18
|
+
Closest candidates:
|
|
19
|
+
- {path} — {title}
|
|
20
|
+
- …
|
|
21
|
+
Next: pass an exact path, or create/revise the spec with om-spec-writing "{spec}".
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This local resolver performs no tracker writes and makes no branch, commit, or PR claim.
|
|
@@ -24,4 +24,4 @@ Example: 2026-03-01-inventory-module.md
|
|
|
24
24
|
1. Route every new application, multi-module feature, or non-trivial business slice through `om-spec-writing` and `.ai/guides/spec-delivery.md`.
|
|
25
25
|
2. After invoking the skill, create the skeleton from `SPEC-000-template.md`; keep it `Draft` while blocking questions or incomplete contracts remain.
|
|
26
26
|
3. Set `Ready for implementation` only after the final compliance report and requirement traceability pass and the user approves implementation.
|
|
27
|
-
4. Implement through `om-implement-spec` (local) or `om-auto-implement-spec` (PR), one dependency-ordered phase at a time; update the Changelog, acceptance evidence, and phase state as work lands.
|
|
27
|
+
4. Implement through `om-implement-spec` (interactive local) or `om-auto-implement-spec` (whole-spec PR), one dependency-ordered phase at a time; update the Changelog, acceptance evidence, and phase state as work lands. Local delivery confirms its phase-derived plan before coding and ends with the stable `Spec:` reference without implying PR automation.
|
|
@@ -447,6 +447,24 @@ function validateCatalog({ root, cases, registry, releaseMatrix, fixtures, seeds
|
|
|
447
447
|
if (!Number.isInteger(item.maxContextFiles) || item.maxContextFiles < requiredInitialContextFiles || item.maxContextFiles > registry.catalog.maxContextFiles) add(id, 'maxContextFiles is impossible or excessive')
|
|
448
448
|
if (!Number.isInteger(item.maxInitialContextBytes) || item.maxInitialContextBytes < 4096 || item.maxInitialContextBytes > registry.catalog.maxInitialContextBytes) add(id, 'maxInitialContextBytes is invalid')
|
|
449
449
|
if (!Number.isInteger(item.maxTotalContextBytes) || item.maxTotalContextBytes < item.maxInitialContextBytes || item.maxTotalContextBytes > registry.catalog.maxTotalContextBytes) add(id, 'maxTotalContextBytes is invalid')
|
|
450
|
+
// A case must be satisfiable against the assets this app actually ships: an agent that
|
|
451
|
+
// reads exactly what the case requires, or exactly what it declares, can never be failed
|
|
452
|
+
// by that case's own budget. Measured from disk, so a grown guide or fact-sheet surfaces
|
|
453
|
+
// here instead of as a live routing failure that looks like a model mistake.
|
|
454
|
+
if (Number.isInteger(item.maxContextFiles) && Number.isInteger(item.maxInitialContextBytes) && Number.isInteger(item.maxTotalContextBytes)) {
|
|
455
|
+
const required = contextStats(root, item.context?.required ?? [])
|
|
456
|
+
const declared = contextStats(root, [...(item.context?.required ?? []), ...(item.context?.allowedExtra ?? [])])
|
|
457
|
+
// `required` is a guaranteed false negative and `declared` only a latent one, so each
|
|
458
|
+
// budget reports the sharper of the two rather than both.
|
|
459
|
+
for (const [measure, limit, budget] of [
|
|
460
|
+
['initialBytes', item.maxInitialContextBytes, 'maxInitialContextBytes'],
|
|
461
|
+
['bytes', item.maxTotalContextBytes, 'maxTotalContextBytes'],
|
|
462
|
+
['initialFiles', item.maxContextFiles, 'maxContextFiles'],
|
|
463
|
+
]) {
|
|
464
|
+
if (required[measure] > limit) add(id, `required context exceeds ${budget}: ${required[measure]}/${limit}`)
|
|
465
|
+
else if (declared[measure] > limit) add(id, `declared context exceeds ${budget}: ${declared[measure]}/${limit}`)
|
|
466
|
+
}
|
|
467
|
+
}
|
|
450
468
|
if (!isUniqueStringArray(item.relatedCases, { min: 1 })) add(id, 'relatedCases must not be empty')
|
|
451
469
|
for (const related of item.relatedCases ?? []) if (!idSet.has(related)) add(id, `dangling related case ${related}`)
|
|
452
470
|
const writable = WRITABLE_KINDS.has(item.evaluationKind)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/cli",
|
|
3
|
-
"version": "0.6.7-develop.
|
|
3
|
+
"version": "0.6.7-develop.6725.1.07a748cfc2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"@mikro-orm/decorators": "^7.1.5",
|
|
61
61
|
"@mikro-orm/migrations": "^7.1.5",
|
|
62
62
|
"@mikro-orm/postgresql": "^7.1.5",
|
|
63
|
-
"@open-mercato/queue": "0.6.7-develop.
|
|
64
|
-
"@open-mercato/shared": "0.6.7-develop.
|
|
63
|
+
"@open-mercato/queue": "0.6.7-develop.6725.1.07a748cfc2",
|
|
64
|
+
"@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2",
|
|
65
65
|
"cross-spawn": "^7.0.6",
|
|
66
66
|
"pg": "8.22.0",
|
|
67
67
|
"semver": "^7.8.5",
|
|
@@ -72,10 +72,10 @@
|
|
|
72
72
|
"typescript-js": "npm:typescript@6.0.3"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"@open-mercato/shared": "0.6.7-develop.
|
|
75
|
+
"@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"@open-mercato/shared": "0.6.7-develop.
|
|
78
|
+
"@open-mercato/shared": "0.6.7-develop.6725.1.07a748cfc2",
|
|
79
79
|
"@types/jest": "^30.0.0",
|
|
80
80
|
"jest": "^30.4.2",
|
|
81
81
|
"ts-jest": "^29.4.11"
|