@entelligentsia/forgecli 0.10.1 → 0.11.2

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.
Files changed (161) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +21 -3
  3. package/dist/CHANGELOG-forge-plugin.md +22 -0
  4. package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
  5. package/dist/extensions/forgecli/add-pipeline.js +143 -0
  6. package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
  7. package/dist/extensions/forgecli/add-task.d.ts +20 -0
  8. package/dist/extensions/forgecli/add-task.js +154 -0
  9. package/dist/extensions/forgecli/add-task.js.map +1 -0
  10. package/dist/extensions/forgecli/calibrate.d.ts +61 -0
  11. package/dist/extensions/forgecli/calibrate.js +488 -0
  12. package/dist/extensions/forgecli/calibrate.js.map +1 -0
  13. package/dist/extensions/forgecli/fix-bug.d.ts +9 -1
  14. package/dist/extensions/forgecli/fix-bug.js +70 -8
  15. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  16. package/dist/extensions/forgecli/forge-commands.js +15 -22
  17. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  18. package/dist/extensions/forgecli/forge-subagent.js +34 -7
  19. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  20. package/dist/extensions/forgecli/forge-update-command.d.ts +9 -0
  21. package/dist/extensions/forgecli/forge-update-command.js +106 -7
  22. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  23. package/dist/extensions/forgecli/health-check.d.ts +22 -1
  24. package/dist/extensions/forgecli/health-check.js +177 -4
  25. package/dist/extensions/forgecli/health-check.js.map +1 -1
  26. package/dist/extensions/forgecli/hook-dispatcher.d.ts +25 -1
  27. package/dist/extensions/forgecli/hook-dispatcher.js +104 -9
  28. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  29. package/dist/extensions/forgecli/hooks/check-update.d.ts +81 -0
  30. package/dist/extensions/forgecli/hooks/check-update.js +308 -0
  31. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -0
  32. package/dist/extensions/forgecli/hooks/forge-permissions.d.ts +32 -0
  33. package/dist/extensions/forgecli/hooks/forge-permissions.js +119 -0
  34. package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -0
  35. package/dist/extensions/forgecli/hooks/triage-error.d.ts +23 -0
  36. package/dist/extensions/forgecli/hooks/triage-error.js +62 -0
  37. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -0
  38. package/dist/extensions/forgecli/hooks/write-guard.d.ts +28 -0
  39. package/dist/extensions/forgecli/hooks/write-guard.js +225 -0
  40. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -0
  41. package/dist/extensions/forgecli/index.js +60 -0
  42. package/dist/extensions/forgecli/index.js.map +1 -1
  43. package/dist/extensions/forgecli/init-context.d.ts +1 -1
  44. package/dist/extensions/forgecli/init-context.js +21 -6
  45. package/dist/extensions/forgecli/init-context.js.map +1 -1
  46. package/dist/extensions/forgecli/materialize.d.ts +16 -0
  47. package/dist/extensions/forgecli/materialize.js +195 -0
  48. package/dist/extensions/forgecli/materialize.js.map +1 -0
  49. package/dist/extensions/forgecli/migrate.d.ts +19 -0
  50. package/dist/extensions/forgecli/migrate.js +258 -0
  51. package/dist/extensions/forgecli/migrate.js.map +1 -0
  52. package/dist/extensions/forgecli/migration-engine.d.ts +111 -0
  53. package/dist/extensions/forgecli/migration-engine.js +533 -0
  54. package/dist/extensions/forgecli/migration-engine.js.map +1 -0
  55. package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
  56. package/dist/extensions/forgecli/quiz-agent.js +98 -0
  57. package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
  58. package/dist/extensions/forgecli/remove-command.d.ts +17 -0
  59. package/dist/extensions/forgecli/remove-command.js +124 -0
  60. package/dist/extensions/forgecli/remove-command.js.map +1 -0
  61. package/dist/extensions/forgecli/report-bug.d.ts +25 -0
  62. package/dist/extensions/forgecli/report-bug.js +159 -0
  63. package/dist/extensions/forgecli/report-bug.js.map +1 -0
  64. package/dist/extensions/forgecli/retrospective.d.ts +19 -0
  65. package/dist/extensions/forgecli/retrospective.js +156 -0
  66. package/dist/extensions/forgecli/retrospective.js.map +1 -0
  67. package/dist/extensions/forgecli/run-sprint.js +34 -0
  68. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  69. package/dist/extensions/forgecli/run-task.d.ts +9 -1
  70. package/dist/extensions/forgecli/run-task.js +64 -10
  71. package/dist/extensions/forgecli/run-task.js.map +1 -1
  72. package/dist/extensions/forgecli/session-registry.d.ts +27 -2
  73. package/dist/extensions/forgecli/session-registry.js +52 -1
  74. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  75. package/dist/extensions/forgecli/status-command.d.ts +19 -0
  76. package/dist/extensions/forgecli/status-command.js +140 -0
  77. package/dist/extensions/forgecli/status-command.js.map +1 -0
  78. package/dist/extensions/forgecli/store-query.d.ts +22 -0
  79. package/dist/extensions/forgecli/store-query.js +107 -0
  80. package/dist/extensions/forgecli/store-query.js.map +1 -0
  81. package/dist/extensions/forgecli/store-repair.d.ts +17 -0
  82. package/dist/extensions/forgecli/store-repair.js +123 -0
  83. package/dist/extensions/forgecli/store-repair.js.map +1 -0
  84. package/dist/extensions/forgecli/thread-switcher.js +213 -28
  85. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  86. package/dist/extensions/forgecli/update-tools.d.ts +23 -0
  87. package/dist/extensions/forgecli/update-tools.js +136 -0
  88. package/dist/extensions/forgecli/update-tools.js.map +1 -0
  89. package/dist/extensions/forgecli/viewport-theme.js +4 -0
  90. package/dist/extensions/forgecli/viewport-theme.js.map +1 -1
  91. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  92. package/dist/forge-payload/.schemas/config.schema.json +83 -0
  93. package/dist/forge-payload/.schemas/migrations.json +2049 -0
  94. package/dist/forge-payload/commands/regenerate.md +17 -1
  95. package/dist/forge-payload/meta/personas/README.md +16 -0
  96. package/dist/forge-payload/meta/personas/meta-architect.md +70 -0
  97. package/dist/forge-payload/meta/personas/meta-bug-fixer.md +73 -0
  98. package/dist/forge-payload/meta/personas/meta-collator.md +72 -0
  99. package/dist/forge-payload/meta/personas/meta-engineer.md +70 -0
  100. package/dist/forge-payload/meta/personas/meta-orchestrator.md +71 -0
  101. package/dist/forge-payload/meta/personas/meta-product-manager.md +82 -0
  102. package/dist/forge-payload/meta/personas/meta-qa-engineer.md +91 -0
  103. package/dist/forge-payload/meta/personas/meta-supervisor.md +92 -0
  104. package/dist/forge-payload/meta/skill-recommendations.md +154 -0
  105. package/dist/forge-payload/meta/skills/meta-architect-skills.md +43 -0
  106. package/dist/forge-payload/meta/skills/meta-bug-fixer-skills.md +43 -0
  107. package/dist/forge-payload/meta/skills/meta-collator-skills.md +41 -0
  108. package/dist/forge-payload/meta/skills/meta-engineer-skills.md +43 -0
  109. package/dist/forge-payload/meta/skills/meta-generic-skills.md +58 -0
  110. package/dist/forge-payload/meta/skills/meta-qa-engineer-skills.md +46 -0
  111. package/dist/forge-payload/meta/skills/meta-supervisor-skills.md +43 -0
  112. package/dist/forge-payload/meta/store-schema/bug.schema.md +71 -0
  113. package/dist/forge-payload/meta/store-schema/event.schema.md +76 -0
  114. package/dist/forge-payload/meta/store-schema/feature.schema.md +65 -0
  115. package/dist/forge-payload/meta/store-schema/sprint.schema.md +64 -0
  116. package/dist/forge-payload/meta/store-schema/task.schema.md +78 -0
  117. package/dist/forge-payload/meta/templates/meta-code-review.md +26 -0
  118. package/dist/forge-payload/meta/templates/meta-plan-review.md +28 -0
  119. package/dist/forge-payload/meta/templates/meta-plan.md +28 -0
  120. package/dist/forge-payload/meta/templates/meta-progress.md +25 -0
  121. package/dist/forge-payload/meta/templates/meta-retrospective.md +28 -0
  122. package/dist/forge-payload/meta/templates/meta-sprint-manifest.md +26 -0
  123. package/dist/forge-payload/meta/templates/meta-sprint-requirements.md +91 -0
  124. package/dist/forge-payload/meta/templates/meta-task-prompt.md +26 -0
  125. package/dist/forge-payload/meta/tool-specs/collate.spec.md +88 -0
  126. package/dist/forge-payload/meta/tool-specs/generation-manifest.spec.md +139 -0
  127. package/dist/forge-payload/meta/tool-specs/manage-config.spec.md +143 -0
  128. package/dist/forge-payload/meta/tool-specs/seed-store.spec.md +91 -0
  129. package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +328 -0
  130. package/dist/forge-payload/meta/tool-specs/validate-store.spec.md +191 -0
  131. package/dist/forge-payload/meta/workflows/_fragments/context-injection.md +75 -0
  132. package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +73 -0
  133. package/dist/forge-payload/meta/workflows/_fragments/finalize.md +13 -0
  134. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +73 -0
  135. package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +38 -0
  136. package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +39 -0
  137. package/dist/forge-payload/meta/workflows/meta-approve.md +119 -0
  138. package/dist/forge-payload/meta/workflows/meta-collate.md +89 -0
  139. package/dist/forge-payload/meta/workflows/meta-commit.md +93 -0
  140. package/dist/forge-payload/meta/workflows/meta-enhance.md +286 -0
  141. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +501 -0
  142. package/dist/forge-payload/meta/workflows/meta-implement.md +132 -0
  143. package/dist/forge-payload/meta/workflows/meta-migrate.md +455 -0
  144. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +993 -0
  145. package/dist/forge-payload/meta/workflows/meta-plan-task.md +133 -0
  146. package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +135 -0
  147. package/dist/forge-payload/meta/workflows/meta-retrospective.md +65 -0
  148. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +119 -0
  149. package/dist/forge-payload/meta/workflows/meta-review-plan.md +108 -0
  150. package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +65 -0
  151. package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +76 -0
  152. package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +147 -0
  153. package/dist/forge-payload/meta/workflows/meta-update-implementation.md +76 -0
  154. package/dist/forge-payload/meta/workflows/meta-update-plan.md +76 -0
  155. package/dist/forge-payload/meta/workflows/meta-validate.md +111 -0
  156. package/dist/forge-payload/tools/check-structure.cjs +344 -0
  157. package/dist/forge-payload/tools/list-skills.js +76 -0
  158. package/dist/forge-payload/tools/store-cli.cjs +27 -1
  159. package/dist/forge-payload/tools/substitute-placeholders.cjs +60 -8
  160. package/dist/forge-payload/tools/verify-integrity.cjs +86 -0
  161. package/package.json +2 -2
@@ -0,0 +1,119 @@
1
+ // Forge permission pattern registry — FORGE-S23-T04.
2
+ //
3
+ // Port of forge/forge/hooks/forge-permissions.js pattern-match auto-allow logic.
4
+ // Pi has no PermissionRequest event, so "auto-allow" means: when the tool_call
5
+ // matches a known Forge pattern, silently return undefined (no block) from the
6
+ // tool_call handler, bypassing the two-layer-guard boundary check.
7
+ //
8
+ // Key differences from the plugin:
9
+ // - No updatedPermissions / localSettings.json persistence: pi has no
10
+ // PermissionRequest event or persistent allow-rule protocol. The rule
11
+ // string is kept for audit-log display only.
12
+ // - WEBFETCH_PATTERNS omitted: pi's @earendil-works/pi-coding-agent has no
13
+ // WebFetchToolCallEvent type in its exported union. Adding dead code that
14
+ // could never fire would be misleading.
15
+ // - MultiEdit patterns omitted: pi has no MultiEdit event.
16
+ // - node -e / node -p remain excluded: arbitrary code execution must not
17
+ // be auto-approved. (Security decision from the original plugin, preserved.)
18
+ //
19
+ // File placement rationale: task prompt suggested "into two-layer-guard.ts",
20
+ // but that file has a tight single-responsibility scope. The T02 (write-guard.ts)
21
+ // and T03 (triage-error.ts) siblings establish the pattern: one concern per file.
22
+ // This file follows that convention per forge-cli-engineer Iron Law 8 (prefer
23
+ // architectural symmetry over literal prompt when prior art exists in the codebase).
24
+ // ── Pattern registries — ported verbatim from forge-permissions.js ──────────
25
+ /** Bash command patterns that are auto-allowed. */
26
+ export const BASH_PATTERNS = [
27
+ // Node tool invocations — covers $FORGE_ROOT/tools/*.cjs and $CLAUDE_PLUGIN_ROOT
28
+ { pattern: /^node\s+.*\/tools\/[\w-]+\.(cjs|js)\b/, rule: "node ~/.claude/plugins/cache/forge/forge/*/tools/*" },
29
+ // NOTE: node -e and node -p are intentionally excluded — arbitrary code
30
+ // execution must not be auto-approved. Forge workflows use node .../tools/*.cjs
31
+ // for tool invocations; inline node -e/p requires explicit user approval.
32
+ // Shell commands used by Forge workflows
33
+ { pattern: /^mkdir\s+-p\s+/, rule: "mkdir -p .forge/*" },
34
+ { pattern: /^mkdir\s+-p\s+\S+/, rule: "mkdir -p .forge/*" },
35
+ { pattern: /^cp\s+/, rule: "cp */schemas/*.schema.json .forge/schemas/" },
36
+ { pattern: /^ls\s+/, rule: "ls *" },
37
+ { pattern: /^cat\s+/, rule: "cat .forge/*" },
38
+ { pattern: /^date\s+-u\s+/, rule: "date -u *" },
39
+ { pattern: /^date\s+/, rule: "date -u *" },
40
+ { pattern: /^jq\s+/, rule: "jq *" },
41
+ { pattern: /^touch\s+/, rule: "touch .forge/*" },
42
+ { pattern: /^uname\s+/, rule: "uname *" },
43
+ { pattern: /^rm\s+\.forge/, rule: "rm .forge/*" },
44
+ { pattern: /^rm\s+-rf\s+\.forge/, rule: "rm -rf .forge/*" },
45
+ { pattern: /^rmdir\s+/, rule: "rmdir .forge/*" },
46
+ { pattern: /^gh\s+auth\s+/, rule: "gh auth status *" },
47
+ { pattern: /^gh\s+issue\s+/, rule: "gh issue create *" },
48
+ // git read-only commands (already auto-approved by Claude Code, but belt-and-suspenders)
49
+ { pattern: /^git\s+status\b/, rule: "git status *" },
50
+ { pattern: /^git\s+log\b/, rule: "git log *" },
51
+ { pattern: /^git\s+diff\b/, rule: "git diff *" },
52
+ { pattern: /^git\s+add\s+/, rule: "git add *" },
53
+ { pattern: /^git\s+commit\s+-m\s+/, rule: "git commit -m *" },
54
+ { pattern: /^git\s+push\b/, rule: "git push *" },
55
+ { pattern: /^git\s+checkout\s+/, rule: "git checkout *" },
56
+ { pattern: /^git\s+branch\s+/, rule: "git branch *" },
57
+ { pattern: /^git\s+stash\b/, rule: "git stash *" },
58
+ { pattern: /^git\s+worktree\s+/, rule: "git worktree *" },
59
+ ];
60
+ /** Write tool path patterns that are auto-allowed. */
61
+ export const WRITE_PATTERNS = [
62
+ { pattern: /^\.forge\//, rule: ".forge/**" },
63
+ { pattern: /^\.claude\/commands\//, rule: ".claude/commands/**" },
64
+ { pattern: /^engineering\//, rule: "engineering/**" },
65
+ { pattern: /^CLAUDE\.md$/i, rule: "CLAUDE.md" },
66
+ { pattern: /^AGENTS\.md$/i, rule: "AGENTS.md" },
67
+ { pattern: /^\.gitignore$/, rule: ".gitignore" },
68
+ ];
69
+ /** Edit tool path patterns that are auto-allowed. */
70
+ export const EDIT_PATTERNS = [
71
+ { pattern: /^\.forge\//, rule: ".forge/**" },
72
+ { pattern: /^\.claude\/commands\//, rule: ".claude/commands/**" },
73
+ { pattern: /^engineering\//, rule: "engineering/**" },
74
+ { pattern: /^CLAUDE\.md$/i, rule: "CLAUDE.md" },
75
+ { pattern: /^AGENTS\.md$/i, rule: "AGENTS.md" },
76
+ ];
77
+ // Map from pi tool name to its pattern list.
78
+ // NOTE: "multiedit" is omitted — pi has no MultiEdit event in its tool_call union.
79
+ // NOTE: "webfetch" is omitted — pi has no WebFetchToolCallEvent type.
80
+ const PATTERN_MAP = {
81
+ bash: BASH_PATTERNS,
82
+ write: WRITE_PATTERNS,
83
+ edit: EDIT_PATTERNS,
84
+ };
85
+ /**
86
+ * Check whether a pi tool_call matches a known Forge auto-allow pattern.
87
+ *
88
+ * @param toolName The pi tool name ("bash", "write", "edit", etc.)
89
+ * @param toolInput The tool's input object (toolCallEvent.input)
90
+ * @returns The matched rule string for audit logging, or null if no match.
91
+ * A non-null return is the "silently allow" signal — the caller
92
+ * should return undefined from the tool_call handler (no block).
93
+ *
94
+ * Input fields tested per tool type (mirrors plugin matchTool):
95
+ * bash → toolInput.command (string)
96
+ * write → toolInput.path (string; pi uses `path`, not `file_path`)
97
+ * edit → toolInput.path (string)
98
+ */
99
+ export function matchForgePermission(toolName, toolInput) {
100
+ const patterns = PATTERN_MAP[toolName];
101
+ if (!patterns)
102
+ return null;
103
+ let input;
104
+ if (toolName === "bash") {
105
+ input = typeof toolInput.command === "string" ? toolInput.command : "";
106
+ }
107
+ else if (toolName === "write" || toolName === "edit") {
108
+ input = typeof toolInput.path === "string" ? toolInput.path : "";
109
+ }
110
+ else {
111
+ return null;
112
+ }
113
+ for (const { pattern, rule } of patterns) {
114
+ if (pattern.test(input))
115
+ return rule;
116
+ }
117
+ return null;
118
+ }
119
+ //# sourceMappingURL=forge-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-permissions.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/forge-permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Regex patterns that identify Forge-related Bash commands.
3
+ * Ported verbatim from forge/forge/hooks/triage-error.js lines 10–20.
4
+ * Exported as `readonly` so tests can verify count and identity.
5
+ */
6
+ export declare const FORGE_PATTERNS: readonly RegExp[];
7
+ /**
8
+ * Returns true if the command matches any Forge-related pattern.
9
+ * Mirrors `isForgeRelated()` from triage-error.js.
10
+ */
11
+ export declare function isForgeRelated(command: string): boolean;
12
+ /**
13
+ * Build the ctx.ui.notify message for a failed Forge-related command.
14
+ *
15
+ * Format (condensed for notification surface):
16
+ * FORGE_ERROR_TRIAGE: A Forge command just failed. [First error line: "...". ]
17
+ * Would you like to file a bug? Run /forge:report-bug
18
+ *
19
+ * @param command The original bash command string (unused in message body; kept for future use).
20
+ * @param outputSnippet First few lines of tool output, already joined to a single string.
21
+ * Empty string if no output is available.
22
+ */
23
+ export declare function buildTriageMessage(_command: string, outputSnippet: string): string;
@@ -0,0 +1,62 @@
1
+ // hooks/triage-error.ts — Post-Bash-failure Forge error triage (FORGE-S23-T03).
2
+ //
3
+ // Port of forge/forge/hooks/triage-error.js (71 lines) for the pi extension context.
4
+ //
5
+ // When a Bash tool call exits non-zero and the command matches a Forge-related
6
+ // pattern, the hook-dispatcher calls isForgeRelated() and, on a match, uses
7
+ // buildTriageMessage() to build a ctx.ui.notify message suggesting the user
8
+ // run /forge:report-bug.
9
+ //
10
+ // This module is a pure helper — no pi imports, no side effects. All logic is
11
+ // exported so tests can exercise it in isolation.
12
+ //
13
+ // Plugin parity reference: forge/forge/hooks/triage-error.js (read-only — do NOT edit).
14
+ //
15
+ // Iron Laws:
16
+ // IL1 — code only under forge-cli/src/extensions/forgecli/.
17
+ // IL6 — no shell-string interpolation; no spawn calls.
18
+ // ── Pattern set (ported verbatim from triage-error.js:10-20) ─────────────────
19
+ /**
20
+ * Regex patterns that identify Forge-related Bash commands.
21
+ * Ported verbatim from forge/forge/hooks/triage-error.js lines 10–20.
22
+ * Exported as `readonly` so tests can verify count and identity.
23
+ */
24
+ export const FORGE_PATTERNS = [
25
+ /manage-config/,
26
+ /\.forge\//,
27
+ /CLAUDE_PLUGIN_ROOT/,
28
+ /FORGE_ROOT/,
29
+ /MANAGE_CONFIG/,
30
+ /engineering\/tools\//,
31
+ /forge:init/,
32
+ /forge:health/,
33
+ /forge:regenerate/,
34
+ /forge:update/,
35
+ /forge:add-pipeline/,
36
+ ];
37
+ // ── Pure helpers ──────────────────────────────────────────────────────────────
38
+ /**
39
+ * Returns true if the command matches any Forge-related pattern.
40
+ * Mirrors `isForgeRelated()` from triage-error.js.
41
+ */
42
+ export function isForgeRelated(command) {
43
+ return FORGE_PATTERNS.some((p) => p.test(command));
44
+ }
45
+ /**
46
+ * Build the ctx.ui.notify message for a failed Forge-related command.
47
+ *
48
+ * Format (condensed for notification surface):
49
+ * FORGE_ERROR_TRIAGE: A Forge command just failed. [First error line: "...". ]
50
+ * Would you like to file a bug? Run /forge:report-bug
51
+ *
52
+ * @param command The original bash command string (unused in message body; kept for future use).
53
+ * @param outputSnippet First few lines of tool output, already joined to a single string.
54
+ * Empty string if no output is available.
55
+ */
56
+ export function buildTriageMessage(_command, outputSnippet) {
57
+ const snippetPart = outputSnippet ? `First error line: "${outputSnippet}". ` : "";
58
+ return (`FORGE_ERROR_TRIAGE: A Forge command just failed. ` +
59
+ snippetPart +
60
+ `Would you like to file a bug? Run /forge:report-bug`);
61
+ }
62
+ //# sourceMappingURL=triage-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-error.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/triage-error.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,qFAAqF;AACrF,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,yBAAyB;AACzB,EAAE;AACF,8EAA8E;AAC9E,kDAAkD;AAClD,EAAE;AACF,wFAAwF;AACxF,EAAE;AACF,aAAa;AACb,8DAA8D;AAC9D,yDAAyD;AAEzD,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAChD,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,sBAAsB;IACtB,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,oBAAoB;CACX,CAAC;AAEX,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC7C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,aAAqB;IACzE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,sBAAsB,aAAa,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,CACN,mDAAmD;QACnD,WAAW;QACX,qDAAqD,CACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ interface RegistryEntry {
2
+ pattern: RegExp;
3
+ schema: string;
4
+ kind: string;
5
+ }
6
+ export declare const WRITE_REGISTRY: RegistryEntry[];
7
+ export declare function matchWriteRegistry(absPath: string): RegistryEntry | null;
8
+ export declare function applyPiEdits(filePath: string, edits: Array<{
9
+ oldText: string;
10
+ newText: string;
11
+ }>): string;
12
+ export interface WriteGuardResult {
13
+ block: boolean;
14
+ reason?: string;
15
+ }
16
+ /**
17
+ * Check whether a Write or Edit targeting `filePath` with `contents` satisfies
18
+ * the Forge schema for that path.
19
+ *
20
+ * @param filePath Absolute path being written (from event.input.path, resolved).
21
+ * @param contents Post-write/post-edit file contents as a string.
22
+ * @param forgeRoot Absolute path to the Forge plugin root.
23
+ * @returns { block: false } if allowed; { block: true, reason } if blocked.
24
+ *
25
+ * Fail-open: returns { block: false } on any internal error.
26
+ */
27
+ export declare function checkWriteGuard(filePath: string, contents: string, forgeRoot: string): WriteGuardResult;
28
+ export {};
@@ -0,0 +1,225 @@
1
+ // Write-boundary schema guard — FORGE-S23-T02.
2
+ //
3
+ // Validates Write/Edit tool calls targeting Forge-owned paths (.forge/store/**/*.json
4
+ // and .forge/config.json) against the corresponding JSON schemas.
5
+ //
6
+ // Mirrors the plugin's forge/forge/hooks/validate-write.js logic, ported to
7
+ // TypeScript for pi's synchronous tool_call handler. Key differences from plugin:
8
+ // - No MultiEdit: pi does not have a MultiEdit event type.
9
+ // - Edit semantics: pi edit events use `edits: [{oldText, newText}]` arrays,
10
+ // not `old_string / new_string`. All edits are applied sequentially.
11
+ // - Progress.log (line-pipe-delimited) format is NOT covered — pi agents do not
12
+ // write progress.log directly; store-cli does.
13
+ // - In-process validation via createRequire (no spawn): matches pi's sync constraint.
14
+ //
15
+ // Fail-open philosophy: any internal error (schema not found, validate.js load
16
+ // failure, JSON parse error) logs a warning to stderr and returns { block: false }.
17
+ // A broken validator must never block legitimate work.
18
+ //
19
+ // FORGE_SKIP_WRITE_VALIDATION=1: bypass switch (operator-only). Logs to hooks.log.
20
+ import { createRequire } from "node:module";
21
+ import { existsSync, readFileSync } from "node:fs";
22
+ import * as path from "node:path";
23
+ import { fileURLToPath } from "node:url";
24
+ export const WRITE_REGISTRY = [
25
+ // Core store entities
26
+ { pattern: /(?:^|\/)\.forge\/store\/features\/[^/]+\.json$/, schema: "feature.schema.json", kind: "feature" },
27
+ { pattern: /(?:^|\/)\.forge\/store\/sprints\/[^/]+\.json$/, schema: "sprint.schema.json", kind: "sprint" },
28
+ { pattern: /(?:^|\/)\.forge\/store\/tasks\/[^/]+\.json$/, schema: "task.schema.json", kind: "task" },
29
+ { pattern: /(?:^|\/)\.forge\/store\/bugs\/[^/]+\.json$/, schema: "bug.schema.json", kind: "bug" },
30
+ // Event sidecars — prefixed with `_`, must be before general event pattern
31
+ {
32
+ pattern: /(?:^|\/)\.forge\/store\/events\/[^/]+\/_[^/]+_usage\.json$/,
33
+ schema: "event-sidecar.schema.json",
34
+ kind: "event-sidecar",
35
+ },
36
+ // Canonical events — any other .json under events/<bucket>/ not starting with `_`
37
+ {
38
+ pattern: /(?:^|\/)\.forge\/store\/events\/[^/]+\/[^_/][^/]*\.json$/,
39
+ schema: "event.schema.json",
40
+ kind: "event",
41
+ },
42
+ // Collation watermark
43
+ {
44
+ pattern: /(?:^|\/)\.forge\/store\/COLLATION_STATE\.json$/,
45
+ schema: "collation-state.schema.json",
46
+ kind: "collation-state",
47
+ },
48
+ // AC#3: Forge config (new — not in plugin registry)
49
+ { pattern: /(?:^|\/)\.forge\/config\.json$/, schema: "config.schema.json", kind: "config" },
50
+ ];
51
+ export function matchWriteRegistry(absPath) {
52
+ if (!absPath || typeof absPath !== "string")
53
+ return null;
54
+ for (const entry of WRITE_REGISTRY) {
55
+ if (entry.pattern.test(absPath))
56
+ return entry;
57
+ }
58
+ return null;
59
+ }
60
+ // ── Schema loader ─────────────────────────────────────────────────────────────
61
+ //
62
+ // Resolution order (mirrors plugin's loadSchema()):
63
+ // 1. <bundleRoot>/forge-payload/.schemas/<filename> — bundled npm install
64
+ // 2. <forgeRoot>/schemas/<filename> — dev mode
65
+ //
66
+ // bundleRoot is resolved relative to this module's location:
67
+ // dist/extensions/forgecli/hooks/write-guard.js → dist/
68
+ // → up 3 levels from the hooks/ directory.
69
+ function resolveBundleRoot() {
70
+ // import.meta.url → this file's URL → resolve to package dist/ root
71
+ const thisFile = fileURLToPath(import.meta.url);
72
+ // thisFile: .../dist/extensions/forgecli/hooks/write-guard.js
73
+ // up 4 dirs: hooks → forgecli → extensions → dist → pkg-root
74
+ // We want dist/, which is 3 levels up from this file's directory
75
+ return path.resolve(path.dirname(thisFile), "../../../");
76
+ }
77
+ function loadSchema(filename, forgeRoot) {
78
+ const bundleRoot = resolveBundleRoot();
79
+ const candidates = [
80
+ path.join(bundleRoot, "forge-payload", ".schemas", filename),
81
+ path.join(forgeRoot, "schemas", filename),
82
+ ];
83
+ for (const c of candidates) {
84
+ if (existsSync(c)) {
85
+ return JSON.parse(readFileSync(c, "utf8"));
86
+ }
87
+ }
88
+ throw new Error(`schema not found: ${filename} (looked in: ${candidates.join(", ")})`);
89
+ }
90
+ function loadValidator(forgeRoot) {
91
+ const require = createRequire(import.meta.url);
92
+ const bundleRoot = resolveBundleRoot();
93
+ const candidates = [
94
+ path.join(bundleRoot, "forge-payload", "tools", "lib", "validate.js"),
95
+ path.join(forgeRoot, "tools", "lib", "validate.js"),
96
+ ];
97
+ for (const c of candidates) {
98
+ if (existsSync(c)) {
99
+ return require(c);
100
+ }
101
+ }
102
+ throw new Error(`validate.js not found (looked in: ${candidates.join(", ")})`);
103
+ }
104
+ // ── Pi edit semantics ──────────────────────────────────────────────────────────
105
+ //
106
+ // Pi edit events carry: { path: string, edits: Array<{oldText: string, newText: string}> }
107
+ // Apply all edits sequentially against the current file contents.
108
+ // Fail-open if the file cannot be read (return empty string).
109
+ export function applyPiEdits(filePath, edits) {
110
+ let contents;
111
+ try {
112
+ contents = existsSync(filePath) ? readFileSync(filePath, "utf8") : "";
113
+ }
114
+ catch {
115
+ // Fail-open: cannot read file, treat as empty
116
+ contents = "";
117
+ }
118
+ for (const edit of edits) {
119
+ const idx = contents.indexOf(edit.oldText);
120
+ if (idx === -1) {
121
+ // oldText not found — fail-open (do not block due to edit mechanics)
122
+ continue;
123
+ }
124
+ contents = contents.slice(0, idx) + edit.newText + contents.slice(idx + edit.oldText.length);
125
+ }
126
+ return contents;
127
+ }
128
+ /**
129
+ * Check whether a Write or Edit targeting `filePath` with `contents` satisfies
130
+ * the Forge schema for that path.
131
+ *
132
+ * @param filePath Absolute path being written (from event.input.path, resolved).
133
+ * @param contents Post-write/post-edit file contents as a string.
134
+ * @param forgeRoot Absolute path to the Forge plugin root.
135
+ * @returns { block: false } if allowed; { block: true, reason } if blocked.
136
+ *
137
+ * Fail-open: returns { block: false } on any internal error.
138
+ */
139
+ export function checkWriteGuard(filePath, contents, forgeRoot) {
140
+ // Bypass: operator-only escape hatch
141
+ if (process.env.FORGE_SKIP_WRITE_VALIDATION === "1") {
142
+ try {
143
+ // Audit log — best-effort
144
+ import("node:fs").then(({ appendFileSync, mkdirSync }) => {
145
+ const logsDir = path.join(process.cwd(), ".forge", "logs");
146
+ mkdirSync(logsDir, { recursive: true });
147
+ const relPath = path.relative(process.cwd(), filePath);
148
+ appendFileSync(path.join(logsDir, "hooks.log"), `[write-guard] FORGE_SKIP_WRITE_VALIDATION=1 bypass on ${relPath}\n`, "utf8");
149
+ }).catch(() => { });
150
+ }
151
+ catch {
152
+ // Audit is best-effort
153
+ }
154
+ return { block: false };
155
+ }
156
+ // Check registry
157
+ const entry = matchWriteRegistry(filePath);
158
+ if (!entry) {
159
+ return { block: false }; // Not a Forge-owned path — allow
160
+ }
161
+ // Load schema and validator (fail-open on any error)
162
+ let validator;
163
+ let schema;
164
+ try {
165
+ validator = loadValidator(forgeRoot);
166
+ schema = loadSchema(entry.schema, forgeRoot);
167
+ }
168
+ catch (err) {
169
+ const msg = err instanceof Error ? err.message : String(err);
170
+ try {
171
+ process.stderr.write(`[write-guard] setup error (fail-open): ${msg}\n`);
172
+ }
173
+ catch {
174
+ // ignore
175
+ }
176
+ return { block: false };
177
+ }
178
+ // Parse JSON
179
+ let parsed;
180
+ try {
181
+ parsed = JSON.parse(contents);
182
+ }
183
+ catch (err) {
184
+ const msg = err instanceof Error ? err.message : String(err);
185
+ const relPath = path.relative(process.cwd(), filePath);
186
+ return {
187
+ block: true,
188
+ reason: `❌ Forge schema violation — write blocked\n` +
189
+ `Path: ${relPath}\n` +
190
+ `Kind: ${entry.kind}\n` +
191
+ `Violation: Invalid JSON: ${msg}\n` +
192
+ `Hint: see forge/schemas/${entry.schema} for the expected shape.\n` +
193
+ "To bypass for one turn (emergency repair): FORGE_SKIP_WRITE_VALIDATION=1.",
194
+ };
195
+ }
196
+ // Validate
197
+ let errors;
198
+ try {
199
+ errors = validator.validateRecord(parsed, schema);
200
+ }
201
+ catch (err) {
202
+ const msg = err instanceof Error ? err.message : String(err);
203
+ try {
204
+ process.stderr.write(`[write-guard] validation error (fail-open): ${msg}\n`);
205
+ }
206
+ catch {
207
+ // ignore
208
+ }
209
+ return { block: false };
210
+ }
211
+ if (errors.length > 0) {
212
+ const relPath = path.relative(process.cwd(), filePath);
213
+ return {
214
+ block: true,
215
+ reason: `❌ Forge schema violation — write blocked\n` +
216
+ `Path: ${relPath}\n` +
217
+ `Kind: ${entry.kind}\n` +
218
+ `Violations:\n - ${errors.join("\n - ")}\n` +
219
+ `Hint: see forge/schemas/${entry.schema} for the full shape.\n` +
220
+ "To bypass for one turn (emergency repair): FORGE_SKIP_WRITE_VALIDATION=1.",
221
+ };
222
+ }
223
+ return { block: false };
224
+ }
225
+ //# sourceMappingURL=write-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-guard.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/hooks/write-guard.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ import { registerRegenerate } from "./regenerate.js";
35
35
  import { registerSprintIntake } from "./sprint-intake.js";
36
36
  import { registerSprintPlan } from "./sprint-plan.js";
37
37
  import { triggerUpdateCheck } from "./update-check.js";
38
+ import { buildForgeAwarenessMsg, buildMultiPluginMsg, buildPendingMigrationMsg, syncForgeRootAndRef, } from "./hooks/check-update.js";
38
39
  import { mountWhatsNewWidgetOnStartup, registerChangelogCommand } from "./whats-new-widget.js";
39
40
  import { registerUsageHook } from "./usage-hook.js";
40
41
  import { registerReadCommand } from "./read-command.js";
@@ -47,7 +48,20 @@ import { registerApprove } from "./approve.js";
47
48
  import { registerCommit } from "./commit.js";
48
49
  import { registerValidate } from "./validate.js";
49
50
  import { registerCollate } from "./collate.js";
51
+ import { registerRetrospective } from "./retrospective.js";
52
+ import { registerCalibrate } from "./calibrate.js";
53
+ import { registerMaterialize } from "./materialize.js";
54
+ import { registerMigrate } from "./migrate.js";
55
+ import { registerUpdateTools } from "./update-tools.js";
56
+ import { registerStoreQuery } from "./store-query.js";
57
+ import { registerStatusCommand } from "./status-command.js";
50
58
  import { registerConfigCommand } from "./config-command.js";
59
+ import { registerAddTask } from "./add-task.js";
60
+ import { registerAddPipeline } from "./add-pipeline.js";
61
+ import { registerQuizAgent } from "./quiz-agent.js";
62
+ import { registerRemoveCommand } from "./remove-command.js";
63
+ import { registerReportBug } from "./report-bug.js";
64
+ import { registerStoreRepair } from "./store-repair.js";
51
65
  import { getInputRouter } from "./input-router.js";
52
66
  import { registerTestOrchestrate } from "./test-orchestrate.js";
53
67
  import { registerThreadSwitcher } from "./thread-switcher.js";
@@ -217,6 +231,39 @@ export default async function forgecli(pi) {
217
231
  if (meta) {
218
232
  ctx.ui.notify(`${meta.name} [${meta.prefix}]`, "info");
219
233
  }
234
+ // 3a. Forge-awareness context + project-state sync (FORGE-S23-T05).
235
+ // Port of check-update.js functions (1), (3), (4), (5).
236
+ // All wrapped in try/catch — session_start must never throw.
237
+ if (forgeConfig) {
238
+ // (1) Forge-awareness context injection (AC#1)
239
+ try {
240
+ const awarenessMsg = buildForgeAwarenessMsg(forgeConfig.configPath);
241
+ if (awarenessMsg)
242
+ ctx.ui.notify(awarenessMsg, "info");
243
+ }
244
+ catch { /* non-fatal */ }
245
+ // (4) Multi-plugin scan — notify if multiple Forge installations found (AC#3)
246
+ try {
247
+ const multiPluginMsg = buildMultiPluginMsg({ forgeRoot: forgeRoot, configPath: forgeConfig.configPath });
248
+ if (multiPluginMsg)
249
+ ctx.ui.notify(multiPluginMsg, "info");
250
+ }
251
+ catch { /* non-fatal */ }
252
+ // (3) Distribution-switch detection + forgeRoot/forgeRef sync (AC#2, AC#6)
253
+ try {
254
+ const switchMsg = syncForgeRootAndRef({ forgeRoot: forgeRoot, configPath: forgeConfig.configPath });
255
+ if (switchMsg)
256
+ ctx.ui.notify(switchMsg, "warning");
257
+ }
258
+ catch { /* non-fatal */ }
259
+ // (5) Pending-migration state surfacing (AC#4)
260
+ try {
261
+ const pendingMsg = buildPendingMigrationMsg(forgeConfig.configPath);
262
+ if (pendingMsg)
263
+ ctx.ui.notify(pendingMsg, "warning");
264
+ }
265
+ catch { /* non-fatal */ }
266
+ }
220
267
  // 4. Update-check probe + banner (FORGE-S16-T14, issue #18 part 1).
221
268
  // Fire-and-forget — never blocks startup; fail-silent on the user surface.
222
269
  if (PKG_VERSIONS.cliVersion && PKG_VERSIONS.bundledForgeVersion) {
@@ -383,6 +430,19 @@ export default async function forgecli(pi) {
383
430
  registerCommit(pi);
384
431
  registerValidate(pi);
385
432
  registerCollate(pi);
433
+ registerRetrospective(pi);
434
+ registerCalibrate(pi); // FORGE-S23-T08: orchestrator handler for drift detection + patch proposal
435
+ registerMaterialize(pi); // FORGE-S23-T09: Atomic handler — fill missing/stubbed artifacts
436
+ registerMigrate(pi); // FORGE-S23-T09: Hybrid handler — structural (subagent) + schema (runMigrations)
437
+ registerUpdateTools(pi); // FORGE-S23-T10: Atomic handler — copy bundled schemas to .forge/schemas/
438
+ registerStoreQuery(pi, { forgeRoot }); // FORGE-S23-T10: Atomic handler — store-cli query/nlp dispatch
439
+ registerStatusCommand(pi, { forgeRoot }); // FORGE-S23-T10: v0 sprint/task summary widget
440
+ registerAddTask(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — add a task mid-sprint
441
+ registerAddPipeline(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — pipeline manager
442
+ registerQuizAgent(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — KB quiz
443
+ registerRemoveCommand(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — remove Forge artifacts
444
+ registerReportBug(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — file bug against Forge
445
+ registerStoreRepair(pi, { forgeRoot }); // FORGE-S23-T11: Kickoff shim — diagnose/repair store
386
446
  // ── /forge:run-workflow generic workflow engine (Plan 14) ────────────────
387
447
  // Resolution order: CWD/workflows/<id> first (user-authored workflows),
388
448
  // then bundled PKG_ROOT/workflows/<id> (shipped examples). Registered unconditionally.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}