@entelligentsia/forgecli 0.19.0 → 0.20.3
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/CHANGELOG.md +90 -0
- package/dist/bin/config.js +9 -9
- package/dist/bin/config.js.map +1 -1
- package/dist/bin/forge.js +3 -3
- package/dist/bin/forge.js.map +1 -1
- package/dist/bin/update-cli.js +2 -1
- package/dist/bin/update-cli.js.map +1 -1
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
- package/dist/extensions/forgecli/add-task.js.map +1 -1
- package/dist/extensions/forgecli/approve.d.ts +2 -2
- package/dist/extensions/forgecli/approve.js +2 -2
- package/dist/extensions/forgecli/approve.js.map +1 -1
- package/dist/extensions/forgecli/ask-user-tool.js.map +1 -1
- package/dist/extensions/forgecli/audience-gate.js.map +1 -1
- package/dist/extensions/forgecli/calibrate.d.ts +1 -1
- package/dist/extensions/forgecli/calibrate.js +8 -10
- package/dist/extensions/forgecli/calibrate.js.map +1 -1
- package/dist/extensions/forgecli/collate.d.ts +2 -2
- package/dist/extensions/forgecli/collate.js +2 -2
- package/dist/extensions/forgecli/collate.js.map +1 -1
- package/dist/extensions/forgecli/commit.d.ts +2 -2
- package/dist/extensions/forgecli/commit.js +2 -2
- package/dist/extensions/forgecli/commit.js.map +1 -1
- package/dist/extensions/forgecli/config-command.js.map +1 -1
- package/dist/extensions/forgecli/config-layer.js +4 -2
- package/dist/extensions/forgecli/config-layer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/component.d.ts +1 -1
- package/dist/extensions/forgecli/config-tui/component.js +25 -21
- package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/handler.js +2 -6
- package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/keys.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/plugin-config-reader.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js +10 -8
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js +2 -5
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/override-editor.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js +15 -11
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +15 -11
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.js +7 -4
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +6 -12
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.js +3 -6
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/personas-list.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/personas-list.js +2 -2
- package/dist/extensions/forgecli/config-tui/screens/personas-list.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +1 -1
- package/dist/extensions/forgecli/config-tui/screens/shared.js +4 -5
- package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +9 -11
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +2 -2
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +12 -3
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/screens/types.d.ts +1 -1
- package/dist/extensions/forgecli/config-tui/screens.d.ts +10 -10
- package/dist/extensions/forgecli/config-tui/screens.js +16 -16
- package/dist/extensions/forgecli/config-tui/screens.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +2 -2
- package/dist/extensions/forgecli/config-tui/state/buffer.js +1 -2
- package/dist/extensions/forgecli/config-tui/state/buffer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/constants.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/index.d.ts +3 -3
- package/dist/extensions/forgecli/config-tui/state/index.js +2 -2
- package/dist/extensions/forgecli/config-tui/state/index.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/reducer.js +2 -4
- package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +1 -1
- package/dist/extensions/forgecli/config-tui/state/selectors.js +7 -6
- package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/state.d.ts +3 -3
- package/dist/extensions/forgecli/config-tui/state.js +2 -2
- package/dist/extensions/forgecli/config-tui/state.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/theme.js +1 -1
- package/dist/extensions/forgecli/config-tui/theme.js.map +1 -1
- package/dist/extensions/forgecli/config-tui/tier-meta.js.map +1 -1
- package/dist/extensions/forgecli/config-writer.js +4 -2
- package/dist/extensions/forgecli/config-writer.js.map +1 -1
- package/dist/extensions/forgecli/enhance.d.ts +2 -2
- package/dist/extensions/forgecli/enhance.js +3 -3
- package/dist/extensions/forgecli/enhance.js.map +1 -1
- package/dist/extensions/forgecli/fix-bug.d.ts +1 -1
- package/dist/extensions/forgecli/fix-bug.js +148 -58
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.d.ts +8 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js +85 -15
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-header.d.ts +1 -1
- package/dist/extensions/forgecli/forge-header.js +1 -1
- package/dist/extensions/forgecli/forge-header.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/phase-descriptors.js +14 -5
- package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js +20 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
- package/dist/extensions/forgecli/forge-init.js +5 -7
- package/dist/extensions/forgecli/forge-init.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +1 -1
- package/dist/extensions/forgecli/forge-subagent.js +4 -2
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.js +10 -4
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/forge-update-command.d.ts +32 -11
- package/dist/extensions/forgecli/forge-update-command.js +207 -155
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/friction-emit.js +3 -5
- package/dist/extensions/forgecli/friction-emit.js.map +1 -1
- package/dist/extensions/forgecli/health-check.js +10 -6
- package/dist/extensions/forgecli/health-check.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +2 -2
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
- package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-init-hook.js +1 -1
- package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js +1 -1
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
- package/dist/extensions/forgecli/hooks/write-guard.js +5 -3
- package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
- package/dist/extensions/forgecli/implement.d.ts +2 -2
- package/dist/extensions/forgecli/implement.js +2 -2
- package/dist/extensions/forgecli/implement.js.map +1 -1
- package/dist/extensions/forgecli/index.js +47 -41
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/input-router.js +4 -1
- package/dist/extensions/forgecli/input-router.js.map +1 -1
- package/dist/extensions/forgecli/lib/catalog-helpers.js +2 -1
- package/dist/extensions/forgecli/lib/catalog-helpers.js.map +1 -1
- package/dist/extensions/forgecli/lib/catalog-loader.js.map +1 -1
- package/dist/extensions/forgecli/lib/catalog-types.js +1 -6
- package/dist/extensions/forgecli/lib/catalog-types.js.map +1 -1
- package/dist/extensions/forgecli/lib/exec-helpers.js +1 -1
- package/dist/extensions/forgecli/lib/exec-helpers.js.map +1 -1
- package/dist/extensions/forgecli/lib/forge-config.js.map +1 -1
- package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -1
- package/dist/extensions/forgecli/lib/parsers.js.map +1 -1
- package/dist/extensions/forgecli/lib/spawn-store-cli.js +17 -7
- package/dist/extensions/forgecli/lib/spawn-store-cli.js.map +1 -1
- package/dist/extensions/forgecli/materialize.js.map +1 -1
- package/dist/extensions/forgecli/migrate.js +1 -1
- package/dist/extensions/forgecli/migrate.js.map +1 -1
- package/dist/extensions/forgecli/migration-engine.js +3 -6
- package/dist/extensions/forgecli/migration-engine.js.map +1 -1
- package/dist/extensions/forgecli/model-resolver.js.map +1 -1
- package/dist/extensions/forgecli/model-validator.js.map +1 -1
- package/dist/extensions/forgecli/parsers/persona-skill-loader.js +1 -1
- package/dist/extensions/forgecli/parsers/workflow-loader.js +2 -6
- package/dist/extensions/forgecli/parsers/workflow-loader.js.map +1 -1
- package/dist/extensions/forgecli/paths/migrator.js +2 -7
- package/dist/extensions/forgecli/paths/migrator.js.map +1 -1
- package/dist/extensions/forgecli/plan.d.ts +2 -2
- package/dist/extensions/forgecli/plan.js +2 -2
- package/dist/extensions/forgecli/plan.js.map +1 -1
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
- package/dist/extensions/forgecli/read-command.js +1 -1
- package/dist/extensions/forgecli/read-command.js.map +1 -1
- package/dist/extensions/forgecli/regenerate.js +1 -3
- package/dist/extensions/forgecli/regenerate.js.map +1 -1
- package/dist/extensions/forgecli/remove-command.js.map +1 -1
- package/dist/extensions/forgecli/report-bug.js +2 -2
- package/dist/extensions/forgecli/report-bug.js.map +1 -1
- package/dist/extensions/forgecli/retrospective.js +2 -2
- package/dist/extensions/forgecli/retrospective.js.map +1 -1
- package/dist/extensions/forgecli/review-code.d.ts +2 -2
- package/dist/extensions/forgecli/review-code.js +2 -2
- package/dist/extensions/forgecli/review-code.js.map +1 -1
- package/dist/extensions/forgecli/review-plan.d.ts +2 -2
- package/dist/extensions/forgecli/review-plan.js +2 -2
- package/dist/extensions/forgecli/review-plan.js.map +1 -1
- package/dist/extensions/forgecli/review-server.js +3 -5
- package/dist/extensions/forgecli/review-server.js.map +1 -1
- package/dist/extensions/forgecli/run-sprint.d.ts +1 -1
- package/dist/extensions/forgecli/run-sprint.js +27 -21
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.js +102 -42
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/skill-curator-subagent.js +4 -8
- package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
- package/dist/extensions/forgecli/skill-retriever.js +1 -1
- package/dist/extensions/forgecli/skill-retriever.js.map +1 -1
- package/dist/extensions/forgecli/skill-usage-tracker.js +1 -1
- package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -1
- package/dist/extensions/forgecli/status-command.js.map +1 -1
- package/dist/extensions/forgecli/store-error-remediation.js +16 -8
- package/dist/extensions/forgecli/store-error-remediation.js.map +1 -1
- package/dist/extensions/forgecli/store-query.js.map +1 -1
- package/dist/extensions/forgecli/store-repair.js.map +1 -1
- package/dist/extensions/forgecli/store-resolver.js +1 -1
- package/dist/extensions/forgecli/store-resolver.js.map +1 -1
- package/dist/extensions/forgecli/store-validator.js +1 -1
- package/dist/extensions/forgecli/store-validator.js.map +1 -1
- package/dist/extensions/forgecli/subagent/agents.js +1 -1
- package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
- package/dist/extensions/forgecli/subagent/index.js +1 -1
- package/dist/extensions/forgecli/subagent/index.js.map +1 -1
- package/dist/extensions/forgecli/test-orchestrate.js +1 -1
- package/dist/extensions/forgecli/test-orchestrate.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.js +8 -18
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/transition-guard.js +1 -1
- package/dist/extensions/forgecli/transition-guard.js.map +1 -1
- package/dist/extensions/forgecli/update-tools.js +1 -2
- package/dist/extensions/forgecli/update-tools.js.map +1 -1
- package/dist/extensions/forgecli/validate.d.ts +2 -2
- package/dist/extensions/forgecli/validate.js +2 -2
- package/dist/extensions/forgecli/validate.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.js +2 -2
- package/dist/extensions/forgecli/viewport-events.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/engine.d.ts +1 -1
- package/dist/extensions/forgecli/wf-engine/engine.js +51 -31
- package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/event-parser.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/id-gen.js +4 -1
- package/dist/extensions/forgecli/wf-engine/id-gen.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/loader.js +7 -7
- package/dist/extensions/forgecli/wf-engine/loader.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/predicate.js +14 -7
- package/dist/extensions/forgecli/wf-engine/predicate.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/prompt-compiler.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/register.js +1 -1
- package/dist/extensions/forgecli/wf-engine/register.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/remit-check.js +3 -3
- package/dist/extensions/forgecli/wf-engine/remit-check.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/state-store.js +7 -3
- package/dist/extensions/forgecli/wf-engine/state-store.js.map +1 -1
- package/dist/extensions/forgecli/wf-engine/worker.js +3 -3
- package/dist/extensions/forgecli/wf-engine/worker.js.map +1 -1
- package/dist/extensions/forgecli/whats-new-widget.js +8 -6
- package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
- package/dist/extensions/forgecli/whats-new.js +1 -2
- package/dist/extensions/forgecli/whats-new.js.map +1 -1
- package/dist/forge-payload/commands/update.md +23 -1
- package/dist/forge-payload/schemas/_defs/phaseSummary.schema.json +18 -0
- package/dist/forge-payload/schemas/bug.schema.json +40 -0
- package/dist/forge-payload/schemas/collation-state.schema.json +16 -0
- package/dist/forge-payload/schemas/config.schema.json +215 -0
- package/dist/forge-payload/schemas/enum-catalog.json +71 -0
- package/dist/forge-payload/schemas/event-sidecar.schema.json +22 -0
- package/dist/forge-payload/schemas/event.schema.json +184 -0
- package/dist/forge-payload/schemas/feature.schema.json +22 -0
- package/dist/forge-payload/schemas/progress-entry.schema.json +16 -0
- package/dist/forge-payload/schemas/project-context.schema.json +167 -0
- package/dist/forge-payload/schemas/project-overlay.schema.json +25 -0
- package/dist/forge-payload/schemas/proposal.schema.json +40 -0
- package/dist/forge-payload/schemas/sprint.schema.json +27 -0
- package/dist/forge-payload/schemas/structure-versions.schema.json +57 -0
- package/dist/forge-payload/schemas/task.schema.json +43 -0
- package/dist/forge-payload/schemas/transitions/bug.json +31 -0
- package/dist/forge-payload/schemas/transitions/sprint.json +46 -0
- package/dist/forge-payload/schemas/transitions/task.json +109 -0
- package/dist/forge-payload/tools/manage-config.cjs +120 -2
- package/package.json +3 -3
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "project-context.schema.json",
|
|
4
|
+
"title": "Project Context",
|
|
5
|
+
"description": "Machine-readable bridge file produced by the Discover phase (Phase 2) of the Forge init flow. Governs project-context.json written by the Phase 2 Discover agent and read by the T03 substitution tool. Distinct from project-overlay.schema.json, which is a per-spawn runtime context overlay; this schema captures persistent project metadata discovered at init/migrate time.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["project"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"project": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["name", "prefix"],
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"name": { "type": "string", "description": "Human-readable project name" },
|
|
16
|
+
"prefix": { "type": "string", "description": "Short identifier prefix (e.g. MYAPP)" },
|
|
17
|
+
"description": { "type": "string", "description": "Brief project description", "default": "" },
|
|
18
|
+
"stack": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"items": { "type": "string" },
|
|
21
|
+
"description": "Technology stack in display order (e.g. [\"Express 4.22\", \"MongoDB 7\"])",
|
|
22
|
+
"default": []
|
|
23
|
+
},
|
|
24
|
+
"commands": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"description": "Primary project lifecycle commands",
|
|
28
|
+
"properties": {
|
|
29
|
+
"test": { "type": "string", "default": "" },
|
|
30
|
+
"build": { "type": "string", "default": "" },
|
|
31
|
+
"deploy": { "type": "string", "default": "" }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"architecture": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"frameworks": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"x-placeholder": "STACK_SUMMARY",
|
|
44
|
+
"description": "Primary frameworks by tier. Rendered as 'backend + frontend + database' string by T03 substitution tool.",
|
|
45
|
+
"properties": {
|
|
46
|
+
"backend": { "type": "string", "default": "" },
|
|
47
|
+
"frontend": { "type": "string", "default": "" },
|
|
48
|
+
"database": { "type": "string", "default": "" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"dataAccess": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "Data access pattern (e.g. 'Mongoose ODM')",
|
|
54
|
+
"default": ""
|
|
55
|
+
},
|
|
56
|
+
"deployment": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Deployment target summary (e.g. 'AWS ECS')",
|
|
59
|
+
"default": ""
|
|
60
|
+
},
|
|
61
|
+
"keyDirectories": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": { "type": "string" },
|
|
64
|
+
"x-placeholder": "KEY_DIRECTORIES",
|
|
65
|
+
"description": "Key source directories joined to 'routes/, admin-app/, ...' by T03.",
|
|
66
|
+
"default": []
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"entities": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"items": { "type": "string" },
|
|
73
|
+
"description": "Domain entity names (e.g. [\"User\", \"Order\", \"Product\"])",
|
|
74
|
+
"default": []
|
|
75
|
+
},
|
|
76
|
+
"conventions": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"properties": {
|
|
80
|
+
"branching": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"x-placeholder": "BRANCHING_CONVENTION",
|
|
83
|
+
"description": "Branching strategy description (e.g. 'feature/TASK-ID-slug'). Direct string substitution by T03.",
|
|
84
|
+
"default": ""
|
|
85
|
+
},
|
|
86
|
+
"taskIdFormat": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "Task ID format pattern (e.g. 'PROJ-###')",
|
|
89
|
+
"default": ""
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"impactCategories": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"items": { "type": "string" },
|
|
96
|
+
"x-placeholder": "IMPACT_CATEGORIES",
|
|
97
|
+
"description": "Impact/risk category labels joined to comma-separated string by T03.",
|
|
98
|
+
"default": []
|
|
99
|
+
},
|
|
100
|
+
"technicalDebt": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"items": { "type": "string" },
|
|
103
|
+
"x-placeholder": "TECHNICAL_DEBT",
|
|
104
|
+
"description": "Known technical debt items joined to comma-separated string by T03.",
|
|
105
|
+
"default": []
|
|
106
|
+
},
|
|
107
|
+
"deployment": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"properties": {
|
|
111
|
+
"environments": {
|
|
112
|
+
"type": "array",
|
|
113
|
+
"x-placeholder": "DEPLOYMENT_ENVIRONMENTS",
|
|
114
|
+
"description": "Deployment environment definitions rendered as a markdown table by T03.",
|
|
115
|
+
"items": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"additionalProperties": false,
|
|
118
|
+
"properties": {
|
|
119
|
+
"name": { "type": "string", "default": "" },
|
|
120
|
+
"frontend": { "type": "string", "default": "" },
|
|
121
|
+
"backend": { "type": "string", "default": "" },
|
|
122
|
+
"region": { "type": "string", "default": "" }
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"default": []
|
|
126
|
+
},
|
|
127
|
+
"impactNotes": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"description": "Freeform deployment impact notes",
|
|
130
|
+
"default": ""
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"verification": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"x-placeholder": "VERIFICATION_COMMANDS",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"description": "Full verification command suite. Rendered as 'npm run type-check, npm test, npm run build' by T03.",
|
|
139
|
+
"properties": {
|
|
140
|
+
"typeCheck": { "type": "string", "default": "" },
|
|
141
|
+
"lint": { "type": "string", "default": "" },
|
|
142
|
+
"test": { "type": "string", "default": "" },
|
|
143
|
+
"build": { "type": "string", "default": "" },
|
|
144
|
+
"infraBuild": { "type": "string", "default": "" }
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"skillWiring": {
|
|
148
|
+
"type": "array",
|
|
149
|
+
"x-placeholder": "SKILL_DIRECTIVES",
|
|
150
|
+
"description": "Skill-to-persona wiring. Rendered as 'skill → persona1, persona2' lines by T03. Mirrors config.json skillWiring so T03 has a single source.",
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "object",
|
|
153
|
+
"additionalProperties": false,
|
|
154
|
+
"required": ["skill"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"skill": { "type": "string" },
|
|
157
|
+
"personas": {
|
|
158
|
+
"type": "array",
|
|
159
|
+
"items": { "type": "string" },
|
|
160
|
+
"default": []
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"default": []
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "project-overlay.schema.json",
|
|
4
|
+
"title": "Project Overlay",
|
|
5
|
+
"description": "Per-spawn context overlay materialized by the orchestrator. Budget: ≤1kB JSON.",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["projectPrefix", "storeRoot", "indexSlice"],
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {
|
|
11
|
+
"version": { "type": "string", "description": "Schema version string. Read by manage-versions.cjs to populate overlayToolVersion at init time.", "default": "1.0.0" },
|
|
12
|
+
"projectPrefix": { "type": "string", "pattern": "^[A-Z][A-Z0-9-]+$" },
|
|
13
|
+
"sprintId": { "type": "string" },
|
|
14
|
+
"sprintDir": { "type": "string" },
|
|
15
|
+
"taskId": { "type": "string" },
|
|
16
|
+
"taskDir": { "type": "string" },
|
|
17
|
+
"taskStatus": { "type": "string" },
|
|
18
|
+
"bugId": { "type": "string" },
|
|
19
|
+
"bugDir": { "type": "string" },
|
|
20
|
+
"storeRoot": { "type": "string" },
|
|
21
|
+
"indexSlice": { "type": "string", "maxLength": 800 },
|
|
22
|
+
"toolCommands": { "type": "object" },
|
|
23
|
+
"lastPhaseSummary": { "type": "object" }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forge/proposal.schema.json",
|
|
4
|
+
"title": "EnhancementProposal",
|
|
5
|
+
"description": "A single Phase 2 enrichment proposal emitted by /forge:enhance. Each record carries an op classification (insert/update/delete a skill artifact), the target file path, and a diff body. Foundation for the T03 judge, T05 delete detection, T06 compression gate, and T07 queue drain.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["op", "target_path", "diff_body"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"proposalId": { "type": "string", "minLength": 1 },
|
|
10
|
+
"op": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"enum": ["insert_skill", "update_skill", "delete_skill"],
|
|
13
|
+
"description": "Three-op classification: insert a new skill artifact, update an existing one, or delete an existing one."
|
|
14
|
+
},
|
|
15
|
+
"target_path": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1,
|
|
18
|
+
"description": "Repository-relative path to the artifact being inserted, updated, or deleted (e.g. forge/skills/engineer-skills.md)."
|
|
19
|
+
},
|
|
20
|
+
"diff_body": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "Unified-diff body or full file body for inserts. For delete_skill this may be empty — the op + target_path is sufficient."
|
|
23
|
+
},
|
|
24
|
+
"rationale": { "type": "string" },
|
|
25
|
+
"sourceFrictionIds": { "type": "array", "items": { "type": "string" } },
|
|
26
|
+
"generated_at": { "type": "string", "format": "date-time" },
|
|
27
|
+
"sprintId": { "type": "string" },
|
|
28
|
+
"recurrence_count": {
|
|
29
|
+
"type": "integer",
|
|
30
|
+
"minimum": 1,
|
|
31
|
+
"description": "FORGE-S24-T04 — count of distinct tasks within the same sprint that emitted a matching (subkind, evidence.skillId) friction event, including the originating task. Always >= 1."
|
|
32
|
+
},
|
|
33
|
+
"recurrence_task_ids": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "type": "string" },
|
|
36
|
+
"description": "FORGE-S24-T04 — taskOrder-sorted list of task IDs that contributed to recurrence_count. Empty when the originating friction event cannot be resolved from sourceFrictionIds."
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forge/sprint.schema.json",
|
|
4
|
+
"title": "Sprint",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["sprintId", "title", "status", "taskIds", "createdAt"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"sprintId": { "type": "string" },
|
|
9
|
+
"feature_id": { "type": ["string", "null"] },
|
|
10
|
+
"title": { "type": "string" },
|
|
11
|
+
"description": { "type": "string" },
|
|
12
|
+
"goal": { "type": "string" },
|
|
13
|
+
"status": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["planning", "active", "completed", "retrospective-done", "blocked", "partially-completed", "abandoned"]
|
|
16
|
+
},
|
|
17
|
+
"taskIds": { "type": "array", "items": { "type": "string" } },
|
|
18
|
+
"dependencies": { "type": "object" },
|
|
19
|
+
"executionMode": { "type": "string", "enum": ["sequential", "wave-parallel", "full-parallel"] },
|
|
20
|
+
"createdAt": { "type": "string", "format": "date-time" },
|
|
21
|
+
"completedAt": { "type": "string", "format": "date-time" },
|
|
22
|
+
"path": { "type": "string" },
|
|
23
|
+
"humanEstimates": { "type": "object" },
|
|
24
|
+
"features": { "type": "array", "items": { "type": "string" } }
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "structure-versions.schema.json",
|
|
4
|
+
"title": "Structure Versions",
|
|
5
|
+
"description": "Tracks versioned structural snapshots of .forge/ elements. Lives at .forge/structure-versions.json (NOT under .forge/store/). Composition model: Working Artifact = base@pluginVersion + snapshot@currentSnapshot + user_enhancements. Snapshot-array invariant: snapshots is ordered ascending by index; currentSnapshot always equals snapshots[snapshots.length - 1].index. Idempotency: manage-versions.cjs init is a no-op if the file already exists.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["basePackVersion", "overlayToolVersion", "currentSnapshot", "snapshots"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"basePackVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Plugin version at materialization time. Ties the snapshot set to a specific base-pack release."
|
|
13
|
+
},
|
|
14
|
+
"overlayToolVersion": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Version of project-overlay.schema.json at materialization time. Independent of structural drift; lets /forge:update detect runtime-contract drift."
|
|
17
|
+
},
|
|
18
|
+
"currentSnapshot": {
|
|
19
|
+
"type": "integer",
|
|
20
|
+
"minimum": 0,
|
|
21
|
+
"description": "Index of the snapshot that produced the current .forge/ working set. Always equals snapshots[snapshots.length - 1].index."
|
|
22
|
+
},
|
|
23
|
+
"snapshots": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"description": "Ordered list of snapshots, ascending by index. Index 0 is always the base-pack snapshot.",
|
|
26
|
+
"items": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"required": ["index", "createdAt", "source"],
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"index": {
|
|
32
|
+
"type": "integer",
|
|
33
|
+
"minimum": 0
|
|
34
|
+
},
|
|
35
|
+
"createdAt": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"format": "date-time"
|
|
38
|
+
},
|
|
39
|
+
"source": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Origin of the snapshot: 'base-pack', 'post-init', 'post-sprint:SPRINT_ID', 'manual'"
|
|
42
|
+
},
|
|
43
|
+
"enhancedElements": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": { "type": "string" },
|
|
46
|
+
"description": "Relative paths of .forge/ elements modified in this snapshot. Empty for snapshot 0.",
|
|
47
|
+
"default": []
|
|
48
|
+
},
|
|
49
|
+
"archivePath": {
|
|
50
|
+
"type": ["string", "null"],
|
|
51
|
+
"description": "Path to the archive directory for this snapshot, e.g. .forge/archive/snap-1/. Null for snapshot 0 (nothing to archive before first enhancement)."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forge/task.schema.json",
|
|
4
|
+
"title": "Task",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["taskId", "sprintId", "title", "status", "path"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"taskId": { "type": "string" },
|
|
9
|
+
"feature_id": { "type": ["string", "null"] },
|
|
10
|
+
"sprintId": { "type": "string" },
|
|
11
|
+
"title": { "type": "string" },
|
|
12
|
+
"description": { "type": "string" },
|
|
13
|
+
"status": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": [
|
|
16
|
+
"draft", "planned", "plan-approved", "implementing",
|
|
17
|
+
"implemented", "review-approved", "approved", "committed",
|
|
18
|
+
"plan-revision-required", "code-revision-required", "blocked", "escalated", "abandoned"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"path": { "type": "string" },
|
|
22
|
+
"estimate": { "type": "string", "enum": ["S", "M", "L", "XL"] },
|
|
23
|
+
"dependencies": { "type": "array", "items": { "type": "string" } },
|
|
24
|
+
"knowledgeUpdates": { "type": "array" },
|
|
25
|
+
"planIterations": { "type": "integer", "minimum": 0 },
|
|
26
|
+
"codeReviewIterations": { "type": "integer", "minimum": 0 },
|
|
27
|
+
"assignedModel": { "type": "string" },
|
|
28
|
+
"pipeline": { "type": "string" },
|
|
29
|
+
"summaries": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"description": "Terse structured summaries of phase artifacts. Optional; full artifacts on disk remain authoritative.",
|
|
32
|
+
"properties": {
|
|
33
|
+
"plan": { "$ref": "_defs/phaseSummary.schema.json" },
|
|
34
|
+
"review_plan": { "$ref": "_defs/phaseSummary.schema.json" },
|
|
35
|
+
"implementation": { "$ref": "_defs/phaseSummary.schema.json" },
|
|
36
|
+
"code_review": { "$ref": "_defs/phaseSummary.schema.json" },
|
|
37
|
+
"validation": { "$ref": "_defs/phaseSummary.schema.json" }
|
|
38
|
+
},
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"additionalProperties": false
|
|
43
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"from": "reported",
|
|
4
|
+
"to": [
|
|
5
|
+
"triaged",
|
|
6
|
+
"abandoned"
|
|
7
|
+
]
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"from": "triaged",
|
|
11
|
+
"to": [
|
|
12
|
+
"in-progress",
|
|
13
|
+
"abandoned"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"from": "in-progress",
|
|
18
|
+
"to": [
|
|
19
|
+
"fixed",
|
|
20
|
+
"abandoned"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"from": "fixed",
|
|
25
|
+
"to": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"from": "abandoned",
|
|
29
|
+
"to": []
|
|
30
|
+
}
|
|
31
|
+
]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"from": "planning",
|
|
4
|
+
"to": [
|
|
5
|
+
"active",
|
|
6
|
+
"blocked",
|
|
7
|
+
"abandoned"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"from": "active",
|
|
12
|
+
"to": [
|
|
13
|
+
"completed",
|
|
14
|
+
"partially-completed",
|
|
15
|
+
"blocked",
|
|
16
|
+
"abandoned"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"from": "completed",
|
|
21
|
+
"to": [
|
|
22
|
+
"retrospective-done"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"from": "partially-completed",
|
|
27
|
+
"to": [
|
|
28
|
+
"retrospective-done"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"from": "retrospective-done",
|
|
33
|
+
"to": []
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"from": "blocked",
|
|
37
|
+
"to": [
|
|
38
|
+
"active",
|
|
39
|
+
"abandoned"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"from": "abandoned",
|
|
44
|
+
"to": []
|
|
45
|
+
}
|
|
46
|
+
]
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"from": "draft",
|
|
4
|
+
"to": [
|
|
5
|
+
"planned",
|
|
6
|
+
"blocked",
|
|
7
|
+
"escalated",
|
|
8
|
+
"abandoned"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"from": "planned",
|
|
13
|
+
"to": [
|
|
14
|
+
"plan-approved",
|
|
15
|
+
"plan-revision-required",
|
|
16
|
+
"blocked",
|
|
17
|
+
"escalated",
|
|
18
|
+
"abandoned"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"from": "plan-approved",
|
|
23
|
+
"to": [
|
|
24
|
+
"implementing",
|
|
25
|
+
"plan-revision-required",
|
|
26
|
+
"blocked",
|
|
27
|
+
"escalated",
|
|
28
|
+
"abandoned"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"from": "implementing",
|
|
33
|
+
"to": [
|
|
34
|
+
"implemented",
|
|
35
|
+
"plan-revision-required",
|
|
36
|
+
"code-revision-required",
|
|
37
|
+
"blocked",
|
|
38
|
+
"escalated",
|
|
39
|
+
"abandoned"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"from": "implemented",
|
|
44
|
+
"to": [
|
|
45
|
+
"review-approved",
|
|
46
|
+
"plan-revision-required",
|
|
47
|
+
"code-revision-required",
|
|
48
|
+
"blocked",
|
|
49
|
+
"escalated",
|
|
50
|
+
"abandoned"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"from": "review-approved",
|
|
55
|
+
"to": [
|
|
56
|
+
"approved",
|
|
57
|
+
"plan-revision-required",
|
|
58
|
+
"code-revision-required",
|
|
59
|
+
"blocked",
|
|
60
|
+
"escalated",
|
|
61
|
+
"abandoned"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"from": "approved",
|
|
66
|
+
"to": [
|
|
67
|
+
"committed",
|
|
68
|
+
"plan-revision-required",
|
|
69
|
+
"code-revision-required",
|
|
70
|
+
"blocked",
|
|
71
|
+
"escalated",
|
|
72
|
+
"abandoned"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"from": "plan-revision-required",
|
|
77
|
+
"to": [
|
|
78
|
+
"planned",
|
|
79
|
+
"blocked",
|
|
80
|
+
"escalated",
|
|
81
|
+
"abandoned"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"from": "code-revision-required",
|
|
86
|
+
"to": [
|
|
87
|
+
"implementing",
|
|
88
|
+
"blocked",
|
|
89
|
+
"escalated",
|
|
90
|
+
"abandoned"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"from": "committed",
|
|
95
|
+
"to": []
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"from": "blocked",
|
|
99
|
+
"to": []
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"from": "escalated",
|
|
103
|
+
"to": []
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"from": "abandoned",
|
|
107
|
+
"to": []
|
|
108
|
+
}
|
|
109
|
+
]
|