specweave 1.0.585 → 1.0.587

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 (165) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/bin/specweave.js +56 -0
  3. package/dist/plugins/specweave/lib/integrations/github/github-access-error.d.ts +48 -0
  4. package/dist/plugins/specweave/lib/integrations/github/github-access-error.d.ts.map +1 -0
  5. package/dist/plugins/specweave/lib/integrations/github/github-access-error.js +69 -0
  6. package/dist/plugins/specweave/lib/integrations/github/github-access-error.js.map +1 -0
  7. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.d.ts +8 -0
  8. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.d.ts.map +1 -1
  9. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.js +22 -2
  10. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.js.map +1 -1
  11. package/dist/plugins/specweave/lib/vendor/generators/spec/task-parser.js +38 -16
  12. package/dist/plugins/specweave/lib/vendor/generators/spec/task-parser.js.map +1 -1
  13. package/dist/plugins/specweave/lib/vendor/utils/credential-masker.js +11 -1
  14. package/dist/plugins/specweave/lib/vendor/utils/credential-masker.js.map +1 -1
  15. package/dist/src/cli/commands/auto.js +1 -1
  16. package/dist/src/cli/commands/auto.js.map +1 -1
  17. package/dist/src/cli/commands/generate-rubric.d.ts +35 -0
  18. package/dist/src/cli/commands/generate-rubric.d.ts.map +1 -0
  19. package/dist/src/cli/commands/generate-rubric.js +73 -0
  20. package/dist/src/cli/commands/generate-rubric.js.map +1 -0
  21. package/dist/src/cli/commands/get.js +22 -9
  22. package/dist/src/cli/commands/get.js.map +1 -1
  23. package/dist/src/cli/commands/handoff.d.ts +54 -0
  24. package/dist/src/cli/commands/handoff.d.ts.map +1 -0
  25. package/dist/src/cli/commands/handoff.js +82 -0
  26. package/dist/src/cli/commands/handoff.js.map +1 -0
  27. package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -1
  28. package/dist/src/cli/commands/plan/plan-orchestrator.js +11 -0
  29. package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -1
  30. package/dist/src/cli/commands/sync-health.d.ts.map +1 -1
  31. package/dist/src/cli/commands/sync-health.js +72 -12
  32. package/dist/src/cli/commands/sync-health.js.map +1 -1
  33. package/dist/src/cli/commands/sync-progress.d.ts.map +1 -1
  34. package/dist/src/cli/commands/sync-progress.js +65 -11
  35. package/dist/src/cli/commands/sync-progress.js.map +1 -1
  36. package/dist/src/cli/helpers/get/register-repo.d.ts.map +1 -1
  37. package/dist/src/cli/helpers/get/register-repo.js +28 -2
  38. package/dist/src/cli/helpers/get/register-repo.js.map +1 -1
  39. package/dist/src/cli/helpers/init/gitignore-generator.d.ts.map +1 -1
  40. package/dist/src/cli/helpers/init/gitignore-generator.js +3 -0
  41. package/dist/src/cli/helpers/init/gitignore-generator.js.map +1 -1
  42. package/dist/src/cli/helpers/init/next-steps.js +1 -1
  43. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  44. package/dist/src/core/analytics/analytics-collector.d.ts.map +1 -1
  45. package/dist/src/core/analytics/analytics-collector.js +9 -1
  46. package/dist/src/core/analytics/analytics-collector.js.map +1 -1
  47. package/dist/src/core/analytics/event-writer.d.ts.map +1 -1
  48. package/dist/src/core/analytics/event-writer.js +3 -1
  49. package/dist/src/core/analytics/event-writer.js.map +1 -1
  50. package/dist/src/core/config/config-manager.d.ts +5 -0
  51. package/dist/src/core/config/config-manager.d.ts.map +1 -1
  52. package/dist/src/core/config/config-manager.js +58 -1
  53. package/dist/src/core/config/config-manager.js.map +1 -1
  54. package/dist/src/core/credentials/credentials-manager.d.ts +21 -0
  55. package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -1
  56. package/dist/src/core/credentials/credentials-manager.js +38 -0
  57. package/dist/src/core/credentials/credentials-manager.js.map +1 -1
  58. package/dist/src/core/hooks/handlers/hook-router.d.ts.map +1 -1
  59. package/dist/src/core/hooks/handlers/hook-router.js +5 -0
  60. package/dist/src/core/hooks/handlers/hook-router.js.map +1 -1
  61. package/dist/src/core/hooks/handlers/pre-compact.d.ts +33 -0
  62. package/dist/src/core/hooks/handlers/pre-compact.d.ts.map +1 -0
  63. package/dist/src/core/hooks/handlers/pre-compact.js +109 -0
  64. package/dist/src/core/hooks/handlers/pre-compact.js.map +1 -0
  65. package/dist/src/core/hooks/handlers/types.d.ts +1 -1
  66. package/dist/src/core/hooks/handlers/types.d.ts.map +1 -1
  67. package/dist/src/core/hooks/handlers/types.js +3 -0
  68. package/dist/src/core/hooks/handlers/types.js.map +1 -1
  69. package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
  70. package/dist/src/core/increment/completion-validator.js +8 -1
  71. package/dist/src/core/increment/completion-validator.js.map +1 -1
  72. package/dist/src/core/increment/template-creator.d.ts.map +1 -1
  73. package/dist/src/core/increment/template-creator.js +5 -19
  74. package/dist/src/core/increment/template-creator.js.map +1 -1
  75. package/dist/src/core/llm/types.d.ts +5 -5
  76. package/dist/src/core/llm/types.d.ts.map +1 -1
  77. package/dist/src/core/llm/types.js +9 -8
  78. package/dist/src/core/llm/types.js.map +1 -1
  79. package/dist/src/core/rubric/rubric-evaluator.d.ts +25 -1
  80. package/dist/src/core/rubric/rubric-evaluator.d.ts.map +1 -1
  81. package/dist/src/core/rubric/rubric-evaluator.js +108 -1
  82. package/dist/src/core/rubric/rubric-evaluator.js.map +1 -1
  83. package/dist/src/core/rubric/rubric-generator.d.ts +28 -1
  84. package/dist/src/core/rubric/rubric-generator.d.ts.map +1 -1
  85. package/dist/src/core/rubric/rubric-generator.js +46 -6
  86. package/dist/src/core/rubric/rubric-generator.js.map +1 -1
  87. package/dist/src/core/rubric/rubric-parser.d.ts.map +1 -1
  88. package/dist/src/core/rubric/rubric-parser.js +18 -2
  89. package/dist/src/core/rubric/rubric-parser.js.map +1 -1
  90. package/dist/src/core/rubric/types.d.ts +1 -1
  91. package/dist/src/core/rubric/types.d.ts.map +1 -1
  92. package/dist/src/core/rubric/types.js.map +1 -1
  93. package/dist/src/core/session/handoff-doc-format.d.ts +164 -0
  94. package/dist/src/core/session/handoff-doc-format.d.ts.map +1 -0
  95. package/dist/src/core/session/handoff-doc-format.js +292 -0
  96. package/dist/src/core/session/handoff-doc-format.js.map +1 -0
  97. package/dist/src/core/session/handoff-git-state.d.ts +49 -0
  98. package/dist/src/core/session/handoff-git-state.d.ts.map +1 -0
  99. package/dist/src/core/session/handoff-git-state.js +164 -0
  100. package/dist/src/core/session/handoff-git-state.js.map +1 -0
  101. package/dist/src/core/session/handoff-secret-scrub.d.ts +59 -0
  102. package/dist/src/core/session/handoff-secret-scrub.d.ts.map +1 -0
  103. package/dist/src/core/session/handoff-secret-scrub.js +72 -0
  104. package/dist/src/core/session/handoff-secret-scrub.js.map +1 -0
  105. package/dist/src/core/session/{handoff-context.d.ts → install-handoff-context.d.ts} +7 -3
  106. package/dist/src/core/session/install-handoff-context.d.ts.map +1 -0
  107. package/dist/src/core/session/{handoff-context.js → install-handoff-context.js} +7 -3
  108. package/dist/src/core/session/install-handoff-context.js.map +1 -0
  109. package/dist/src/core/session/work-handoff.d.ts +88 -0
  110. package/dist/src/core/session/work-handoff.d.ts.map +1 -0
  111. package/dist/src/core/session/work-handoff.js +412 -0
  112. package/dist/src/core/session/work-handoff.js.map +1 -0
  113. package/dist/src/core/sync/retry-wrapper.d.ts +14 -2
  114. package/dist/src/core/sync/retry-wrapper.d.ts.map +1 -1
  115. package/dist/src/core/sync/retry-wrapper.js +15 -4
  116. package/dist/src/core/sync/retry-wrapper.js.map +1 -1
  117. package/dist/src/generators/spec/task-parser.d.ts.map +1 -1
  118. package/dist/src/generators/spec/task-parser.js +38 -16
  119. package/dist/src/generators/spec/task-parser.js.map +1 -1
  120. package/dist/src/integrations/ado/ado-pat-provider.d.ts +6 -2
  121. package/dist/src/integrations/ado/ado-pat-provider.d.ts.map +1 -1
  122. package/dist/src/integrations/ado/ado-pat-provider.js +16 -22
  123. package/dist/src/integrations/ado/ado-pat-provider.js.map +1 -1
  124. package/dist/src/sync/external-item-sync-service.d.ts.map +1 -1
  125. package/dist/src/sync/external-item-sync-service.js +6 -2
  126. package/dist/src/sync/external-item-sync-service.js.map +1 -1
  127. package/dist/src/sync/resilient-write.d.ts +42 -0
  128. package/dist/src/sync/resilient-write.d.ts.map +1 -0
  129. package/dist/src/sync/resilient-write.js +52 -0
  130. package/dist/src/sync/resilient-write.js.map +1 -0
  131. package/dist/src/sync/story-router.d.ts +10 -2
  132. package/dist/src/sync/story-router.d.ts.map +1 -1
  133. package/dist/src/sync/story-router.js.map +1 -1
  134. package/dist/src/sync/sync-coordinator.d.ts +11 -0
  135. package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
  136. package/dist/src/sync/sync-coordinator.js +69 -26
  137. package/dist/src/sync/sync-coordinator.js.map +1 -1
  138. package/dist/src/sync/sync-target-resolver.d.ts +10 -6
  139. package/dist/src/sync/sync-target-resolver.d.ts.map +1 -1
  140. package/dist/src/sync/sync-target-resolver.js +66 -57
  141. package/dist/src/sync/sync-target-resolver.js.map +1 -1
  142. package/dist/src/utils/credential-masker.d.ts.map +1 -1
  143. package/dist/src/utils/credential-masker.js +11 -1
  144. package/dist/src/utils/credential-masker.js.map +1 -1
  145. package/dist/src/utils/structure-level-detector.d.ts +1 -1
  146. package/dist/src/utils/structure-level-detector.d.ts.map +1 -1
  147. package/dist/src/utils/structure-level-detector.js +23 -4
  148. package/dist/src/utils/structure-level-detector.js.map +1 -1
  149. package/package.json +1 -1
  150. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  151. package/plugins/specweave/commands/handoff.md +54 -0
  152. package/plugins/specweave/defaults/rubric-defaults.md +6 -2
  153. package/plugins/specweave/lib/integrations/github/github-access-error.js +43 -0
  154. package/plugins/specweave/lib/integrations/github/github-access-error.ts +103 -0
  155. package/plugins/specweave/lib/integrations/github/github-client-v2.js +24 -4
  156. package/plugins/specweave/lib/integrations/github/github-client-v2.ts +26 -4
  157. package/plugins/specweave/lib/vendor/generators/spec/task-parser.js +38 -16
  158. package/plugins/specweave/lib/vendor/generators/spec/task-parser.js.map +1 -1
  159. package/plugins/specweave/lib/vendor/utils/credential-masker.js +11 -1
  160. package/plugins/specweave/lib/vendor/utils/credential-masker.js.map +1 -1
  161. package/plugins/specweave/skills/github-sync/SKILL.md +28 -566
  162. package/plugins/specweave/skills/github-sync/evals/evals.json +3 -3
  163. package/plugins/specweave/skills/handoff/SKILL.md +59 -0
  164. package/dist/src/core/session/handoff-context.d.ts.map +0 -1
  165. package/dist/src/core/session/handoff-context.js.map +0 -1
@@ -1,6 +1,102 @@
1
1
  import * as fs from '../../utils/fs-native.js';
2
2
  import * as path from 'path';
3
+ import { spawnSync } from 'child_process';
3
4
  import { emitRefinementIfAttributable } from '../skill-signal-emit.js';
5
+ /** Default bound for a `command` criterion probe (ms). */
6
+ export const DEFAULT_COMMAND_TIMEOUT_MS = 60000;
7
+ /** Max bytes of stdout/stderr captured into a command criterion's evidence. */
8
+ const COMMAND_EVIDENCE_MAX_BYTES = 2048;
9
+ /**
10
+ * Credential-like env var names stripped before running a `command` probe.
11
+ * Keywords match only as whole `_`-delimited segments (or the full name) — so
12
+ * `AZURE_DEVOPS_PAT` / `GITHUB_TOKEN` are stripped but `PATH` is NOT (the bare
13
+ * substring `PAT` inside `PATH` must never trigger removal, or every probe loses
14
+ * its executable lookup path and dies with `exit 127: command not found`).
15
+ */
16
+ const CREDENTIAL_ENV_PATTERN = /(^|_)(PAT|TOKEN|SECRET|PASSWORD|PASSWD|APIKEY|API_KEY|PRIVATE_KEY|CREDENTIAL|ACCESS_KEY)($|_)/i;
17
+ /** Env vars always preserved for the probe shell, regardless of name match. */
18
+ const ESSENTIAL_ENV_KEYS = new Set([
19
+ 'PATH', 'HOME', 'SHELL', 'USER', 'LOGNAME', 'TMPDIR', 'TMP', 'TEMP',
20
+ 'LANG', 'LC_ALL', 'PWD', 'NODE_PATH', 'NVM_DIR',
21
+ ]);
22
+ /** Keep only the last `maxBytes` of a string, prefixing an ellipsis on truncation. */
23
+ function tailTruncate(text, maxBytes) {
24
+ if (text.length <= maxBytes)
25
+ return text;
26
+ return '…' + text.slice(text.length - maxBytes);
27
+ }
28
+ /**
29
+ * Build a child-process env with credential-like vars stripped. We never inject
30
+ * tokens into a probe; a `command` criterion must be self-contained.
31
+ */
32
+ function buildSanitizedEnv() {
33
+ const sanitized = {};
34
+ for (const [key, value] of Object.entries(process.env)) {
35
+ if (!ESSENTIAL_ENV_KEYS.has(key) && CREDENTIAL_ENV_PATTERN.test(key))
36
+ continue;
37
+ sanitized[key] = value;
38
+ }
39
+ return sanitized;
40
+ }
41
+ /**
42
+ * Run a `command` criterion's `Verify` shell probe and map the exit code to a
43
+ * pass/fail result. Exit 0 → pass; non-zero, timeout, or spawn error → fail.
44
+ * NEVER returns `skip`. Evidence captures a truncated tail of stdout/stderr.
45
+ *
46
+ * The probe runs with `shell: true` in `options.cwd`, a bounded timeout, and an
47
+ * env with credential-like variables stripped (no token injection).
48
+ */
49
+ export function evaluateCommandCriterion(criterion, options) {
50
+ const now = new Date().toISOString();
51
+ const command = (criterion.verify ?? '').trim();
52
+ const timeout = options.timeoutMs ?? DEFAULT_COMMAND_TIMEOUT_MS;
53
+ if (!command) {
54
+ return {
55
+ status: 'fail',
56
+ evidence: 'command criterion has no Verify probe',
57
+ evaluatedAt: now,
58
+ };
59
+ }
60
+ const proc = spawnSync(command, {
61
+ cwd: options.cwd,
62
+ shell: true,
63
+ timeout,
64
+ env: buildSanitizedEnv(),
65
+ encoding: 'utf-8',
66
+ maxBuffer: 10 * 1024 * 1024,
67
+ });
68
+ const stdout = proc.stdout ?? '';
69
+ const stderr = proc.stderr ?? '';
70
+ const combined = tailTruncate([stdout, stderr].filter(Boolean).join('\n').trim(), COMMAND_EVIDENCE_MAX_BYTES);
71
+ // Node sets error.code === 'ETIMEDOUT' and signal === 'SIGTERM' on timeout.
72
+ const timedOut = proc.error && proc.error.code === 'ETIMEDOUT';
73
+ if (timedOut || proc.signal === 'SIGTERM') {
74
+ return {
75
+ status: 'fail',
76
+ evidence: `command timed out after ${timeout}ms${combined ? `: ${combined}` : ''}`,
77
+ evaluatedAt: now,
78
+ };
79
+ }
80
+ if (proc.error) {
81
+ return {
82
+ status: 'fail',
83
+ evidence: `command failed to run: ${proc.error.message}${combined ? ` | ${combined}` : ''}`,
84
+ evaluatedAt: now,
85
+ };
86
+ }
87
+ if (proc.status === 0) {
88
+ return {
89
+ status: 'pass',
90
+ evidence: combined || 'exit 0',
91
+ evaluatedAt: now,
92
+ };
93
+ }
94
+ return {
95
+ status: 'fail',
96
+ evidence: `exit ${proc.status ?? 'unknown'}${combined ? `: ${combined}` : ''}`,
97
+ evaluatedAt: now,
98
+ };
99
+ }
4
100
  async function loadReport(reportsDir, filename) {
5
101
  const filePath = path.join(reportsDir, filename);
6
102
  const content = await fs.readFile(filePath, 'utf-8');
@@ -93,6 +189,14 @@ export async function evaluateRubric(rubric, reportsDir, options = {}) {
93
189
  result = evaluateJudgeLlm(report);
94
190
  break;
95
191
  }
192
+ case 'command': {
193
+ const cwd = options.commandCwd ?? options.projectRoot ?? path.dirname(reportsDir);
194
+ result = evaluateCommandCriterion(criterion, {
195
+ cwd,
196
+ timeoutMs: options.commandTimeoutMs,
197
+ });
198
+ break;
199
+ }
96
200
  case 'coverage':
97
201
  case 'manual':
98
202
  default:
@@ -102,7 +206,10 @@ export async function evaluateRubric(rubric, reportsDir, options = {}) {
102
206
  }
103
207
  catch (error) {
104
208
  const reason = error instanceof Error ? error.message : String(error);
105
- result = { status: 'skip', evidence: `Gate report unavailable: ${reason}`, evaluatedAt: new Date().toISOString() };
209
+ // A `command` criterion must NEVER resolve to skip any failure to run
210
+ // its probe is a hard fail, not an unevaluated pass-through.
211
+ const fallbackStatus = criterion.evaluator === 'command' ? 'fail' : 'skip';
212
+ result = { status: fallbackStatus, evidence: `Gate report unavailable: ${reason}`, evaluatedAt: new Date().toISOString() };
106
213
  }
107
214
  evaluatedCriteria.push({ ...criterion, result });
108
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-evaluator.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rubric-evaluator.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-evaluator.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,35 @@ interface GenerateOptions {
6
6
  */
7
7
  export declare function generateRubric(incrementId: string, specContent: string, options?: GenerateOptions): string;
8
8
  /**
9
- * Generate rubric.md and write to the increment directory.
9
+ * Generate rubric.md and write to the increment ROOT directory.
10
+ *
11
+ * Writes unconditionally (overwrites). Use {@link ensureRubricFile} for the
12
+ * idempotent, no-clobber path that respects an existing user-authored rubric.
10
13
  */
11
14
  export declare function generateRubricFile(incrementId: string, incrementPath: string, options?: GenerateOptions): Promise<void>;
15
+ export interface EnsureRubricResult {
16
+ /** Whether the root rubric.md was (re)written. */
17
+ written: boolean;
18
+ /** Absolute path to the root rubric.md. */
19
+ rubricPath: string;
20
+ /** Why generation was skipped, when `written` is false. */
21
+ skippedReason?: 'exists-non-template' | 'no-acs';
22
+ }
23
+ export interface EnsureRubricOptions extends GenerateOptions {
24
+ /** Overwrite an existing non-template rubric.md. Default false (no-clobber). */
25
+ refresh?: boolean;
26
+ }
27
+ /**
28
+ * Idempotently ensure a non-template `rubric.md` exists at the increment ROOT.
29
+ *
30
+ * - If a non-template root rubric.md already exists and `refresh` is false,
31
+ * it is left untouched (no clobber).
32
+ * - A `status: template` placeholder is always replaced.
33
+ * - With `refresh: true`, the rubric is regenerated from the current spec.md.
34
+ *
35
+ * Writing to the ROOT (not `reports/`) is intentional — the closure gate in
36
+ * `completion-validator.ts` reads the root rubric.md.
37
+ */
38
+ export declare function ensureRubricFile(incrementId: string, incrementPath: string, options?: EnsureRubricOptions): Promise<EnsureRubricResult>;
12
39
  export {};
13
40
  //# sourceMappingURL=rubric-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-generator.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAkGR;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf"}
1
+ {"version":3,"file":"rubric-generator.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-generator.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAwGR;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf;AAQD,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAAC;CAClD;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAgB7B"}
@@ -27,8 +27,9 @@ export function generateRubric(incrementId, specContent, options = {}) {
27
27
  const acs = extractACs(specContent);
28
28
  const coverageTarget = options.coverageTarget ?? 90;
29
29
  const lines = [];
30
- let counter = 1;
31
- const pad = (n) => String(n).padStart(3, '0');
30
+ // Derive the criterion ID from the AC ID: AC-US1-03 → R-US1-03. The rubric
31
+ // parser requires the ID to end in a digit (`R-[A-Z0-9-]+\d+`).
32
+ const criterionIdForAC = (acId) => `R-${acId.replace(/^AC-/, '')}`;
32
33
  // Frontmatter
33
34
  lines.push('---');
34
35
  lines.push(`increment: ${incrementId}`);
@@ -60,7 +61,7 @@ export function generateRubric(incrementId, specContent, options = {}) {
60
61
  }
61
62
  for (const [, usAcs] of byUS) {
62
63
  for (const ac of usAcs) {
63
- const id = `R-${pad(counter++)}`;
64
+ const id = criterionIdForAC(ac.id);
64
65
  lines.push(`### ${id}: ${ac.description} [blocking]`);
65
66
  lines.push(`- **Source**: ${ac.id}`);
66
67
  lines.push('- **Evaluator**: sw:grill');
@@ -76,10 +77,15 @@ export function generateRubric(incrementId, specContent, options = {}) {
76
77
  lines.push('');
77
78
  lines.push('## Test Coverage');
78
79
  lines.push('');
79
- lines.push(`### R-D01: Unit test coverage meets target [blocking]`);
80
+ // R-D01 is ADVISORY: line coverage is authoritatively gated by the dedicated
81
+ // validateCoverage path in completion-validator (which hard-fails on real
82
+ // low coverage and skips when no coverage report exists). The `coverage`
83
+ // rubric evaluator is not automated and would otherwise resolve to `skip`,
84
+ // which blocks closure for every increment — so it mirrors, not double-gates.
85
+ lines.push(`### R-D01: Unit test coverage meets target [advisory]`);
80
86
  lines.push('- **Source**: project-default');
81
87
  lines.push('- **Evaluator**: coverage');
82
- lines.push(`- **Verify**: Coverage output on new/modified files`);
88
+ lines.push(`- **Verify**: Coverage output on new/modified files (authoritative gate: completion-validator validateCoverage)`);
83
89
  lines.push(`- **Threshold**: >= ${coverageTarget}% line coverage`);
84
90
  lines.push('- **Result**: [ ] PENDING');
85
91
  lines.push('');
@@ -115,7 +121,10 @@ export function generateRubric(incrementId, specContent, options = {}) {
115
121
  return lines.join('\n');
116
122
  }
117
123
  /**
118
- * Generate rubric.md and write to the increment directory.
124
+ * Generate rubric.md and write to the increment ROOT directory.
125
+ *
126
+ * Writes unconditionally (overwrites). Use {@link ensureRubricFile} for the
127
+ * idempotent, no-clobber path that respects an existing user-authored rubric.
119
128
  */
120
129
  export async function generateRubricFile(incrementId, incrementPath, options = {}) {
121
130
  const specPath = path.join(incrementPath, 'spec.md');
@@ -123,4 +132,35 @@ export async function generateRubricFile(incrementId, incrementPath, options = {
123
132
  const rubricContent = generateRubric(incrementId, specContent, options);
124
133
  await fs.writeFile(path.join(incrementPath, 'rubric.md'), rubricContent, 'utf-8');
125
134
  }
135
+ /** True when a rubric.md's frontmatter carries `status: template` (placeholder). */
136
+ function isTemplateRubric(content) {
137
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
138
+ return fmMatch ? fmMatch[1].includes('status: template') : false;
139
+ }
140
+ /**
141
+ * Idempotently ensure a non-template `rubric.md` exists at the increment ROOT.
142
+ *
143
+ * - If a non-template root rubric.md already exists and `refresh` is false,
144
+ * it is left untouched (no clobber).
145
+ * - A `status: template` placeholder is always replaced.
146
+ * - With `refresh: true`, the rubric is regenerated from the current spec.md.
147
+ *
148
+ * Writing to the ROOT (not `reports/`) is intentional — the closure gate in
149
+ * `completion-validator.ts` reads the root rubric.md.
150
+ */
151
+ export async function ensureRubricFile(incrementId, incrementPath, options = {}) {
152
+ const rubricPath = path.join(incrementPath, 'rubric.md');
153
+ const refresh = options.refresh ?? false;
154
+ if (!refresh && (await fs.pathExists(rubricPath))) {
155
+ const existing = await fs.readFile(rubricPath, 'utf-8');
156
+ if (!isTemplateRubric(existing)) {
157
+ return { written: false, rubricPath, skippedReason: 'exists-non-template' };
158
+ }
159
+ }
160
+ const specPath = path.join(incrementPath, 'spec.md');
161
+ const specContent = await fs.readFile(specPath, 'utf-8');
162
+ const rubricContent = generateRubric(incrementId, specContent, options);
163
+ await fs.writeFile(rubricPath, rubricContent, 'utf-8');
164
+ return { written: true, rubricPath };
165
+ }
126
166
  //# sourceMappingURL=rubric-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-generator.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rubric-generator.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,YAAY,CAAC;AAyCpB;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CA6H3D;AAgBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAG/E"}
1
+ {"version":3,"file":"rubric-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,YAAY,CAAC;AAqDpB;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAkI3D;AAgBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAG/E"}
@@ -6,6 +6,17 @@ const FIELD_RE = /^-\s+\*\*(\w[\w\s]*)\*\*:\s+(.+)$/;
6
6
  const RESULT_PASS_RE = /^\[x\]\s*PASS/i;
7
7
  const RESULT_FAIL_RE = /^\[!\]\s*FAIL(?:\s*(?:—|-)\s*(.*))?$/i;
8
8
  const RESULT_PENDING_RE = /^\[\s*\]\s*PENDING/i;
9
+ /**
10
+ * Strip a surrounding markdown inline-code span from a field value so a
11
+ * `command` probe written as `` `cmd` `` (or ``` ``cmd`` ```) executes the
12
+ * command itself, not a backtick-wrapped string the shell would treat as
13
+ * command substitution. Only strips when the whole value is one code span.
14
+ */
15
+ function stripInlineCode(value) {
16
+ const trimmed = value.trim();
17
+ const m = trimmed.match(/^(`{1,3})([\s\S]*)\1$/);
18
+ return m ? m[2].trim() : trimmed;
19
+ }
9
20
  function toKebabCategory(heading) {
10
21
  const kebab = heading.trim().toLowerCase().replace(/\s+/g, '-');
11
22
  const validCategories = [
@@ -111,14 +122,19 @@ export function parseRubric(content) {
111
122
  .filter(Boolean);
112
123
  break;
113
124
  case 'evaluator': {
114
- const validEvaluators = ['sw:grill', 'sw:code-reviewer', 'sw:judge-llm', 'coverage', 'manual'];
125
+ const validEvaluators = ['sw:grill', 'sw:code-reviewer', 'sw:judge-llm', 'command', 'coverage', 'manual'];
115
126
  currentCriterion.evaluator = validEvaluators.includes(fieldValue)
116
127
  ? fieldValue
117
128
  : 'sw:grill'; // default for unknown evaluators
118
129
  break;
119
130
  }
120
131
  case 'verify':
121
- currentCriterion.verify = fieldValue;
132
+ // Strip a surrounding markdown inline-code span (``` ``cmd`` ``` or
133
+ // `cmd`). Writing a command probe in backticks is the natural
134
+ // markdown idiom, but leaving the backticks in makes the shell do
135
+ // command substitution — it runs the inner command, then tries to
136
+ // exec its OUTPUT as a command (`exit 127: RUN: command not found`).
137
+ currentCriterion.verify = stripInlineCode(fieldValue);
122
138
  break;
123
139
  case 'threshold':
124
140
  currentCriterion.threshold = fieldValue;
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-parser.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rubric-parser.js","sourceRoot":"","sources":["../../../../src/core/rubric/rubric-parser.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  /** Two severity levels only — blocking must pass, advisory is informational */
8
8
  export type RubricSeverity = 'blocking' | 'advisory';
9
9
  /** Gate that evaluates this criterion */
10
- export type EvaluatorId = 'sw:grill' | 'sw:code-reviewer' | 'sw:judge-llm' | 'coverage' | 'manual';
10
+ export type EvaluatorId = 'sw:grill' | 'sw:code-reviewer' | 'sw:judge-llm' | 'command' | 'coverage' | 'manual';
11
11
  /** Standard rubric categories */
12
12
  export type RubricCategory = 'functional-correctness' | 'test-coverage' | 'code-quality' | 'security' | 'performance' | 'documentation' | 'independent-evaluation';
13
13
  /** Result of evaluating a single criterion */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAErD,yCAAyC;AACzC,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,kBAAkB,GAClB,cAAc,GACd,UAAU,GACV,QAAQ,CAAC;AAEb,iCAAiC;AACjC,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,eAAe,GACf,cAAc,GACd,UAAU,GACV,aAAa,GACb,eAAe,GACf,wBAAwB,CAAC;AAE7B,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC;AAED,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qDAAqD;AACrD,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,MAAM;gBAF/B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM;CAKlC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/rubric/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAErD,yCAAyC;AACzC,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,kBAAkB,GAClB,cAAc,GACd,SAAS,GACT,UAAU,GACV,QAAQ,CAAC;AAEb,iCAAiC;AACjC,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,eAAe,GACf,cAAc,GACd,UAAU,GACV,aAAa,GACb,eAAe,GACf,wBAAwB,CAAC;AAE7B,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC;AAED,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qDAAqD;AACrD,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,MAAM;gBAF/B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM;CAKlC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/rubric/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4DH,qDAAqD;AACrD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACE,OAAe,EACC,UAAkB,EAClB,OAAe;QAE/B,KAAK,CAAC,8BAA8B,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;QAH9C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAQ;QAG/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/rubric/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6DH,qDAAqD;AACrD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACE,OAAe,EACC,UAAkB,EAClB,OAAe;QAE/B,KAAK,CAAC,8BAA8B,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;QAH9C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAQ;QAG/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Handoff Doc Format — single source of truth
3
+ *
4
+ * Renders BOTH the durable handoff document and the copy-paste resume prompt
5
+ * from one {@link HandoffDocInput}. The CLI command, the PreCompact hook
6
+ * handler, and the vitest parity test all render through this module, so the
7
+ * doc format and paste-prompt cannot drift between code paths. The vskill
8
+ * self-contained skill inlines a byte-compatible template that references the
9
+ * same canonical section order + footer marker exported here.
10
+ *
11
+ * Design rules:
12
+ * - This module is PURE rendering. It does no IO, no git, no workspace
13
+ * detection — callers pass already-captured + already-scrubbed data in.
14
+ * - The absolute doc path, the `.diff` path, and the per-tool resume matrix are
15
+ * inputs/constants so the renderer is deterministic and testable.
16
+ * - The `Doc format v1` footer marker (DOC_FORMAT_MARKER) is the ownership
17
+ * sentinel that lets the builder know a file is a prior handoff it may
18
+ * overwrite, and the version handle for future format migrations.
19
+ *
20
+ * Part of increment 0867: Cross-Tool Work Handoff
21
+ * (AC-US1-02, AC-US2-04, AC-US5-01..04, AC-US6-02, AC-US6-05).
22
+ *
23
+ * @module core/session/handoff-doc-format
24
+ */
25
+ /**
26
+ * Footer marker stamped at the bottom of every handoff doc.
27
+ *
28
+ * Doubles as the ownership sentinel: a root `./HANDOFF.md` containing this
29
+ * string is treated as a prior handoff (safe to overwrite); one lacking it is a
30
+ * foreign file the builder must not clobber.
31
+ */
32
+ export declare const DOC_FORMAT_MARKER = "Doc format v1";
33
+ /**
34
+ * Delimiters wrapping the self-contained body in `--inline` paste-prompts.
35
+ * A resuming agent reads everything between these markers as the handoff.
36
+ */
37
+ export declare const INLINE_BEGIN_MARKER = "BEGIN HANDOFF";
38
+ export declare const INLINE_END_MARKER = "END HANDOFF";
39
+ /**
40
+ * Canonical section headers, in render order. Exported so the vskill inlined
41
+ * template and the format-parity test (T-017) reference ONE source and fail at
42
+ * build time if either side reorders or renames a section.
43
+ */
44
+ export declare const HANDOFF_SECTION_ORDER: readonly string[];
45
+ /**
46
+ * Per-tool resume guidance. The `findSession` + `resumeCmd` strings are
47
+ * VERIFIED against the live CLIs and pinned by cross-tool-commands.test.ts
48
+ * (T-016) so the matrix cannot silently drift when a tool updates.
49
+ */
50
+ export interface ToolResumeEntry {
51
+ /** Display name. */
52
+ tool: string;
53
+ /** How to locate the source session on disk / in the tool. */
54
+ findSession: string;
55
+ /** Native resume command(s). */
56
+ resumeCmd: string;
57
+ }
58
+ /**
59
+ * The cross-tool resume matrix (AC-US5-01, AC-US5-02).
60
+ *
61
+ * NOTE on Claude: session files live under
62
+ * `~/.claude/projects/<munged-cwd>/<uuid>.jsonl`, where the cwd is munged by
63
+ * replacing EVERY non-alphanumeric char with `-` and NOT collapsing runs — so a
64
+ * leading slash and adjacent separators each become their own dash. Example:
65
+ * /Users/.../specweave-umb/.claude-worktrees/x
66
+ * → -Users-...-specweave-umb--claude-worktrees-x
67
+ * (the `/.` between `umb` and `claude-worktrees` yields a double dash).
68
+ */
69
+ export declare const CLAUDE_MUNGE_EXAMPLE: string;
70
+ export declare const TOOL_RESUME_MATRIX: readonly ToolResumeEntry[];
71
+ /**
72
+ * Increment-derived facts (present only on the SpecWeave high-fidelity path).
73
+ */
74
+ export interface HandoffIncrementInfo {
75
+ id: string;
76
+ status: string;
77
+ /** Title from spec.md frontmatter, if available. */
78
+ title?: string;
79
+ /** The current (first incomplete / in-progress) task line, if any. */
80
+ currentTask?: string;
81
+ /** The next pending task line after the current one, if any. */
82
+ nextTask?: string;
83
+ doneTasks: number;
84
+ totalTasks: number;
85
+ taskPercentage: number;
86
+ doneAcs: number;
87
+ totalAcs: number;
88
+ /** Human-readable AC/task drift summary lines from acSyncEvents. */
89
+ acSyncEvents: string[];
90
+ }
91
+ /**
92
+ * Ambient project rules merged from config.json.
93
+ */
94
+ export interface HandoffAmbientRules {
95
+ testMode?: string;
96
+ coverageTarget?: number;
97
+ wipLimit?: number;
98
+ }
99
+ /**
100
+ * Git facts for the doc body (mirrors GitState minus the diff file contents).
101
+ */
102
+ export interface HandoffGitInfo {
103
+ isGitRepo: boolean;
104
+ branch: string;
105
+ shortSha: string;
106
+ statusPorcelain: string;
107
+ diffStat: string;
108
+ hasUncommittedChanges: boolean;
109
+ }
110
+ /**
111
+ * The complete, already-scrubbed input to the renderer.
112
+ */
113
+ export interface HandoffDocInput {
114
+ /** Absolute path the doc itself will be written to (printed first by CLI). */
115
+ docPath: string;
116
+ /** Absolute path of the sibling full-diff file. */
117
+ diffPath: string;
118
+ /** Repo / workspace root. */
119
+ repoRoot: string;
120
+ /** ISO timestamp of generation. */
121
+ generatedAt: string;
122
+ /** Whether this is the SpecWeave high-fidelity path. */
123
+ isSpecWeave: boolean;
124
+ /** Free-text "why I'm handing off" (e.g. "out of tokens"). */
125
+ reason?: string;
126
+ /** Free-text summary of where things stand. */
127
+ summary?: string;
128
+ /** Free-text exact next step. */
129
+ next?: string;
130
+ /** Free-text gotcha / warning for the next agent. */
131
+ gotcha?: string;
132
+ /** Key decisions (from plan.md + agent-supplied, already merged). */
133
+ decisions: string[];
134
+ /** Increment facts (SpecWeave path only). */
135
+ increment?: HandoffIncrementInfo;
136
+ /** Ambient rules from config.json. */
137
+ ambient?: HandoffAmbientRules;
138
+ /** Git facts. */
139
+ git: HandoffGitInfo;
140
+ /** Per-pattern redaction counts from the secret scrub. */
141
+ redactionCounts: Record<string, number>;
142
+ }
143
+ /**
144
+ * Render the per-tool "find your source session" block.
145
+ */
146
+ export declare function renderResumeMatrix(): string;
147
+ /**
148
+ * Render the full handoff document body (markdown).
149
+ *
150
+ * Section order is locked to {@link HANDOFF_SECTION_ORDER}; the `Doc format v1`
151
+ * footer marker is always last.
152
+ */
153
+ export declare function renderHandoffDoc(input: HandoffDocInput): string;
154
+ /**
155
+ * Render the copy-paste resume prompt.
156
+ *
157
+ * Default (file-reachable) mode points the next agent at the doc path. The
158
+ * `inline` mode embeds the FULL doc body between BEGIN/END markers for
159
+ * cross-machine resume where the file is unreachable (AC-US5-04).
160
+ */
161
+ export declare function renderPastePrompt(input: HandoffDocInput, opts?: {
162
+ inline?: boolean;
163
+ }): string;
164
+ //# sourceMappingURL=handoff-doc-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-doc-format.d.ts","sourceRoot":"","sources":["../../../../src/core/session/handoff-doc-format.ts"],"names":[],"mappings":"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"}