youmd 0.10.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/brain.d.ts.map +1 -1
- package/dist/commands/brain.js +91 -28
- package/dist/commands/brain.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +6 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/conversations.d.ts +5 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +116 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +16 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/founder.d.ts +13 -0
- package/dist/commands/founder.d.ts.map +1 -0
- package/dist/commands/founder.js +189 -0
- package/dist/commands/founder.js.map +1 -0
- package/dist/commands/handoff.d.ts +5 -0
- package/dist/commands/handoff.d.ts.map +1 -0
- package/dist/commands/handoff.js +432 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +15 -0
- package/dist/commands/orchestrate.d.ts.map +1 -1
- package/dist/commands/orchestrate.js +294 -0
- package/dist/commands/orchestrate.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +8 -1
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/reconcile.d.ts +15 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +260 -0
- package/dist/commands/reconcile.js.map +1 -0
- package/dist/commands/session.d.ts +28 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +895 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/stack.d.ts +2 -0
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +26 -0
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tasks.d.ts +57 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +236 -31
- package/dist/commands/tasks.js.map +1 -1
- package/dist/generated/capability-registry.d.ts +311 -71
- package/dist/generated/capability-registry.d.ts.map +1 -1
- package/dist/generated/capability-registry.js +346 -71
- package/dist/generated/capability-registry.js.map +1 -1
- package/dist/index.js +113 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +362 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +171 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/brain/adapters.d.ts +20 -1
- package/dist/lib/brain/adapters.d.ts.map +1 -1
- package/dist/lib/brain/adapters.js +113 -2
- package/dist/lib/brain/adapters.js.map +1 -1
- package/dist/lib/brain/approval-key-trust.d.ts +29 -0
- package/dist/lib/brain/approval-key-trust.d.ts.map +1 -0
- package/dist/lib/brain/approval-key-trust.js +139 -0
- package/dist/lib/brain/approval-key-trust.js.map +1 -0
- package/dist/lib/brain/cache.d.ts +2 -2
- package/dist/lib/brain/cache.d.ts.map +1 -1
- package/dist/lib/brain/cache.js +4 -4
- package/dist/lib/brain/cache.js.map +1 -1
- package/dist/lib/brain/content.d.ts +56 -0
- package/dist/lib/brain/content.d.ts.map +1 -0
- package/dist/lib/brain/content.js +362 -0
- package/dist/lib/brain/content.js.map +1 -0
- package/dist/lib/brain/descriptor-validator.d.ts +11 -0
- package/dist/lib/brain/descriptor-validator.d.ts.map +1 -0
- package/dist/lib/brain/descriptor-validator.js +185 -0
- package/dist/lib/brain/descriptor-validator.js.map +1 -0
- package/dist/lib/brain/discovery.d.ts.map +1 -1
- package/dist/lib/brain/discovery.js +103 -60
- package/dist/lib/brain/discovery.js.map +1 -1
- package/dist/lib/brain/index.d.ts +2 -0
- package/dist/lib/brain/index.d.ts.map +1 -1
- package/dist/lib/brain/index.js +8 -2
- package/dist/lib/brain/index.js.map +1 -1
- package/dist/lib/brain/proposal.d.ts +53 -5
- package/dist/lib/brain/proposal.d.ts.map +1 -1
- package/dist/lib/brain/proposal.js +341 -64
- package/dist/lib/brain/proposal.js.map +1 -1
- package/dist/lib/brain/safe-file.d.ts +25 -1
- package/dist/lib/brain/safe-file.d.ts.map +1 -1
- package/dist/lib/brain/safe-file.js +250 -30
- package/dist/lib/brain/safe-file.js.map +1 -1
- package/dist/lib/brain/safe-open.d.ts +2 -0
- package/dist/lib/brain/safe-open.d.ts.map +1 -0
- package/dist/lib/brain/safe-open.js +77 -0
- package/dist/lib/brain/safe-open.js.map +1 -0
- package/dist/lib/brain/safety.d.ts.map +1 -1
- package/dist/lib/brain/safety.js +5 -0
- package/dist/lib/brain/safety.js.map +1 -1
- package/dist/lib/brain/staged-apply.d.ts +2 -1
- package/dist/lib/brain/staged-apply.d.ts.map +1 -1
- package/dist/lib/brain/staged-apply.js +6 -3
- package/dist/lib/brain/staged-apply.js.map +1 -1
- package/dist/lib/brain/store.d.ts +3 -0
- package/dist/lib/brain/store.d.ts.map +1 -1
- package/dist/lib/brain/store.js +68 -0
- package/dist/lib/brain/store.js.map +1 -1
- package/dist/lib/brain/sync.d.ts +87 -0
- package/dist/lib/brain/sync.d.ts.map +1 -0
- package/dist/lib/brain/sync.js +238 -0
- package/dist/lib/brain/sync.js.map +1 -0
- package/dist/lib/brain/types.d.ts +23 -0
- package/dist/lib/brain/types.d.ts.map +1 -1
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +3 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/daemon.js +1 -1
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/goalRegistryFile.d.ts +169 -0
- package/dist/lib/goalRegistryFile.d.ts.map +1 -0
- package/dist/lib/goalRegistryFile.js +518 -0
- package/dist/lib/goalRegistryFile.js.map +1 -0
- package/dist/lib/goalsFile.d.ts +101 -0
- package/dist/lib/goalsFile.d.ts.map +1 -0
- package/dist/lib/goalsFile.js +413 -0
- package/dist/lib/goalsFile.js.map +1 -0
- package/dist/lib/handoff.d.ts +170 -0
- package/dist/lib/handoff.d.ts.map +1 -0
- package/dist/lib/handoff.js +316 -0
- package/dist/lib/handoff.js.map +1 -0
- package/dist/lib/machine-identity.d.ts +2 -0
- package/dist/lib/machine-identity.d.ts.map +1 -1
- package/dist/lib/machine-identity.js +13 -6
- package/dist/lib/machine-identity.js.map +1 -1
- package/dist/lib/onboarding.d.ts +4 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +11 -3
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/orchestrator/loop.d.ts +7 -0
- package/dist/lib/orchestrator/loop.d.ts.map +1 -1
- package/dist/lib/orchestrator/loop.js +53 -0
- package/dist/lib/orchestrator/loop.js.map +1 -1
- package/dist/lib/orchestrator/run-journal.d.ts +178 -0
- package/dist/lib/orchestrator/run-journal.d.ts.map +1 -0
- package/dist/lib/orchestrator/run-journal.js +912 -0
- package/dist/lib/orchestrator/run-journal.js.map +1 -0
- package/dist/lib/orchestrator/supervisor.d.ts +11 -0
- package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
- package/dist/lib/orchestrator/supervisor.js +304 -116
- package/dist/lib/orchestrator/supervisor.js.map +1 -1
- package/dist/lib/orchestrator/tools.d.ts +2 -0
- package/dist/lib/orchestrator/tools.d.ts.map +1 -1
- package/dist/lib/orchestrator/tools.js +214 -1
- package/dist/lib/orchestrator/tools.js.map +1 -1
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/redact.js +31 -6
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/remote-agent-event.d.ts +19 -0
- package/dist/lib/remote-agent-event.d.ts.map +1 -0
- package/dist/lib/remote-agent-event.js +85 -0
- package/dist/lib/remote-agent-event.js.map +1 -0
- package/dist/lib/remote-command.d.ts.map +1 -1
- package/dist/lib/remote-command.js +19 -0
- package/dist/lib/remote-command.js.map +1 -1
- package/dist/lib/remote-executor.d.ts +7 -1
- package/dist/lib/remote-executor.d.ts.map +1 -1
- package/dist/lib/remote-executor.js +391 -0
- package/dist/lib/remote-executor.js.map +1 -1
- package/dist/lib/sessionCheckpoint.d.ts +104 -0
- package/dist/lib/sessionCheckpoint.d.ts.map +1 -0
- package/dist/lib/sessionCheckpoint.js +191 -0
- package/dist/lib/sessionCheckpoint.js.map +1 -0
- package/dist/lib/sessionHandoff.d.ts +47 -0
- package/dist/lib/sessionHandoff.d.ts.map +1 -0
- package/dist/lib/sessionHandoff.js +305 -0
- package/dist/lib/sessionHandoff.js.map +1 -0
- package/dist/lib/stream.d.ts +3 -1
- package/dist/lib/stream.d.ts.map +1 -1
- package/dist/lib/stream.js +8 -3
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/taskLedgerProposal.d.ts +102 -0
- package/dist/lib/taskLedgerProposal.d.ts.map +1 -0
- package/dist/lib/taskLedgerProposal.js +408 -0
- package/dist/lib/taskLedgerProposal.js.map +1 -0
- package/dist/lib/tasksFile.d.ts +23 -2
- package/dist/lib/tasksFile.d.ts.map +1 -1
- package/dist/lib/tasksFile.js +122 -10
- package/dist/lib/tasksFile.js.map +1 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +110 -0
- package/dist/mcp/registry.js.map +1 -1
- package/native/prebuilds/darwin-universal/youmd_safe_open.node +0 -0
- package/native/safe-open/youmd_safe_open.c +224 -0
- package/package.json +11 -3
- package/scripts/build-safe-open.mjs +63 -0
- package/scripts/skillstack-sync/com.you.context-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.identity-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.orchestrator-watch.plist +1 -1
- package/scripts/skillstack-sync/com.you.realtime-sync.plist +7 -1
- package/scripts/skillstack-sync/com.you.skillstack-sync.plist +1 -1
- package/scripts/skillstack-sync/context-sync.sh +19 -7
- package/scripts/skillstack-sync/install-daemons-linux.sh +6 -0
- package/scripts/smoke-safe-open-node.cjs +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionHandoff.js","sourceRoot":"","sources":["../../src/lib/sessionHandoff.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/stream.d.ts
CHANGED
|
@@ -87,10 +87,12 @@ export interface ChatTurnMessage {
|
|
|
87
87
|
* Calls onToken with each RAW text delta (unfiltered — display filtering is
|
|
88
88
|
* the caller's concern) and returns the full assembled raw response.
|
|
89
89
|
*/
|
|
90
|
-
export declare function streamSSEText(streamUrl: string, messages: ChatTurnMessage[], onToken: (text: string) => void, timeoutMs?: number): Promise<string>;
|
|
90
|
+
export declare function streamSSEText(streamUrl: string, messages: ChatTurnMessage[], onToken: (text: string) => void, timeoutMs?: number, authorizationToken?: string): Promise<string>;
|
|
91
91
|
export interface StreamAssistantTurnOptions {
|
|
92
92
|
streamUrl: string;
|
|
93
93
|
messages: ChatTurnMessage[];
|
|
94
|
+
/** Optional You.md owner token used to hydrate private Founder OS context. */
|
|
95
|
+
authorizationToken?: string;
|
|
94
96
|
/** BrailleSpinner label shown while waiting for the first token. */
|
|
95
97
|
spinnerLabel: string;
|
|
96
98
|
timeoutMs?: number;
|
package/dist/lib/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAcH,eAAO,MAAM,6BAA6B,kCAA6B,CAAC;AAExE;;;;;;;;;GASG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,KAAK,CAAuB;IACpC,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAK;IACpB,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAM;IACtB,uEAAuE;IACvE,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAE9B,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA2G3B,2DAA2D;IAC3D,KAAK,IAAI,MAAM;IAkBf,wEAAwE;IACxE,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,4DAA4D;IAC5D,IAAI,qBAAqB,IAAI,OAAO,CAEnC;IAED,6DAA6D;IAC7D,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,6DAA6D;IAC7D,IAAI,mBAAmB,IAAI,MAAM,CAEhC;CACF;AAID,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,IAAI,IAAI,CAAC;IACf,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1E,oBAAoB,CAyCtB;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC/B,SAAS,SAAU,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAcH,eAAO,MAAM,6BAA6B,kCAA6B,CAAC;AAExE;;;;;;;;;GASG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,KAAK,CAAuB;IACpC,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAK;IACpB,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAM;IACtB,uEAAuE;IACvE,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAE9B,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA2G3B,2DAA2D;IAC3D,KAAK,IAAI,MAAM;IAkBf,wEAAwE;IACxE,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,4DAA4D;IAC5D,IAAI,qBAAqB,IAAI,OAAO,CAEnC;IAED,6DAA6D;IAC7D,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,6DAA6D;IAC7D,IAAI,mBAAmB,IAAI,MAAM,CAEhC;CACF;AAID,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,IAAI,IAAI,CAAC;IACf,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1E,oBAAoB,CAyCtB;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC/B,SAAS,SAAU,EACnB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAID,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAyD9C"}
|
package/dist/lib/stream.js
CHANGED
|
@@ -256,10 +256,15 @@ function createFilteredStdoutWriter(opts = {}) {
|
|
|
256
256
|
* Calls onToken with each RAW text delta (unfiltered — display filtering is
|
|
257
257
|
* the caller's concern) and returns the full assembled raw response.
|
|
258
258
|
*/
|
|
259
|
-
async function streamSSEText(streamUrl, messages, onToken, timeoutMs = 120000) {
|
|
259
|
+
async function streamSSEText(streamUrl, messages, onToken, timeoutMs = 120000, authorizationToken) {
|
|
260
260
|
const res = await fetch(streamUrl, {
|
|
261
261
|
method: "POST",
|
|
262
|
-
headers: {
|
|
262
|
+
headers: {
|
|
263
|
+
"Content-Type": "application/json",
|
|
264
|
+
...(authorizationToken
|
|
265
|
+
? { Authorization: `Bearer ${authorizationToken}` }
|
|
266
|
+
: {}),
|
|
267
|
+
},
|
|
263
268
|
body: JSON.stringify({ messages }),
|
|
264
269
|
signal: AbortSignal.timeout(timeoutMs),
|
|
265
270
|
});
|
|
@@ -329,7 +334,7 @@ async function streamAssistantTurn(opts) {
|
|
|
329
334
|
firstToken = false;
|
|
330
335
|
}
|
|
331
336
|
writer.write(token);
|
|
332
|
-
}, opts.timeoutMs ?? 120000);
|
|
337
|
+
}, opts.timeoutMs ?? 120000, opts.authorizationToken);
|
|
333
338
|
if (!firstToken) {
|
|
334
339
|
writer.finish();
|
|
335
340
|
return { text: response, streamed: true };
|
package/dist/lib/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;AA8MH,gEA2CC;AAcD,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only validation and exact migration proposals for repository task ledgers.
|
|
3
|
+
*
|
|
4
|
+
* This module deliberately has no write or apply function. A proposal is review
|
|
5
|
+
* evidence only; repository mutation remains governed by the existing task_write
|
|
6
|
+
* and Project Brain approval contracts.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProjectBrainPatchOperation } from "./brain/proposal";
|
|
9
|
+
import { TasksDoc } from "./tasksFile";
|
|
10
|
+
export declare const TASK_LEDGER_VALIDATION_VERSION: "you-md/task-ledger-validation/v1";
|
|
11
|
+
export declare const TASK_LEDGER_FIX_PROPOSAL_VERSION: "you-md/task-ledger-fix-proposal/v1";
|
|
12
|
+
export interface TaskLedgerFailureDetail {
|
|
13
|
+
code: string;
|
|
14
|
+
message: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TaskLedgerBaseFile {
|
|
17
|
+
path: string;
|
|
18
|
+
exists: boolean;
|
|
19
|
+
contentHash: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface TaskLedgerValidationEntry {
|
|
22
|
+
project: string;
|
|
23
|
+
contextDir: string;
|
|
24
|
+
status: "valid" | "invalid";
|
|
25
|
+
valid: boolean;
|
|
26
|
+
taskCount: number | null;
|
|
27
|
+
adoptionRequired: boolean;
|
|
28
|
+
base: {
|
|
29
|
+
tasksJson: TaskLedgerBaseFile;
|
|
30
|
+
tasksMd: TaskLedgerBaseFile;
|
|
31
|
+
};
|
|
32
|
+
failures: TaskLedgerFailureDetail[];
|
|
33
|
+
}
|
|
34
|
+
export interface TaskLedgerValidationResult {
|
|
35
|
+
schemaVersion: typeof TASK_LEDGER_VALIDATION_VERSION;
|
|
36
|
+
kind: "task-ledger-validation";
|
|
37
|
+
scope: "current" | "all";
|
|
38
|
+
ok: boolean;
|
|
39
|
+
counts: {
|
|
40
|
+
ledgers: number;
|
|
41
|
+
valid: number;
|
|
42
|
+
invalid: number;
|
|
43
|
+
};
|
|
44
|
+
ledgers: TaskLedgerValidationEntry[];
|
|
45
|
+
}
|
|
46
|
+
export type TaskLedgerFixClassification = "generator_drift" | "mechanical_id_migration" | "manual_review";
|
|
47
|
+
export interface TaskLedgerFixProposal {
|
|
48
|
+
schemaVersion: typeof TASK_LEDGER_FIX_PROPOSAL_VERSION;
|
|
49
|
+
kind: "task-ledger-fix-proposal";
|
|
50
|
+
proposalRef: string;
|
|
51
|
+
project: string;
|
|
52
|
+
contextDir: string;
|
|
53
|
+
status: "proposed";
|
|
54
|
+
authority: "review_only";
|
|
55
|
+
applySupported: false;
|
|
56
|
+
classification: TaskLedgerFixClassification;
|
|
57
|
+
adoptionRequired: boolean;
|
|
58
|
+
risk: {
|
|
59
|
+
level: "low" | "medium" | "high";
|
|
60
|
+
review: "exact_patch" | "manual_review";
|
|
61
|
+
reason: string;
|
|
62
|
+
};
|
|
63
|
+
failures: TaskLedgerFailureDetail[];
|
|
64
|
+
base: TaskLedgerValidationEntry["base"];
|
|
65
|
+
tasksJson: {
|
|
66
|
+
path: string;
|
|
67
|
+
patchFormat: "rfc6902";
|
|
68
|
+
operations: ProjectBrainPatchOperation[];
|
|
69
|
+
patchDigest: string;
|
|
70
|
+
resultContentHash: string | null;
|
|
71
|
+
};
|
|
72
|
+
tasksMd: {
|
|
73
|
+
path: string;
|
|
74
|
+
replacement: string | null;
|
|
75
|
+
baseContentHash: string | null;
|
|
76
|
+
replacementContentHash: string | null;
|
|
77
|
+
generatedFromTasksJsonHash: string | null;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export interface TaskLedgerProposalGenerationResult {
|
|
81
|
+
schemaVersion: "you-md/task-ledger-fix-proposal-generation/v1";
|
|
82
|
+
kind: "task-ledger-fix-proposal-generation";
|
|
83
|
+
scope: "current" | "all";
|
|
84
|
+
ok: true;
|
|
85
|
+
counts: {
|
|
86
|
+
invalid: number;
|
|
87
|
+
proposals: number;
|
|
88
|
+
exactPatch: number;
|
|
89
|
+
manualReview: number;
|
|
90
|
+
};
|
|
91
|
+
proposals: TaskLedgerFixProposal[];
|
|
92
|
+
}
|
|
93
|
+
export declare function taskLedgerContextDirs(contextDirs: string[]): string[];
|
|
94
|
+
export declare function validateTaskLedgers(contextDirs: string[], scope: "current" | "all", requestedProject?: string): TaskLedgerValidationResult;
|
|
95
|
+
export interface MechanicalTaskLedgerRepair {
|
|
96
|
+
doc: TasksDoc;
|
|
97
|
+
content: string;
|
|
98
|
+
operations: ProjectBrainPatchOperation[];
|
|
99
|
+
}
|
|
100
|
+
export declare function mechanicalTaskLedgerRepair(content: string, expectedProject: string): MechanicalTaskLedgerRepair | null;
|
|
101
|
+
export declare function proposeTaskLedgerFixes(contextDirs: string[], scope: "current" | "all", requestedProject?: string): TaskLedgerProposalGenerationResult;
|
|
102
|
+
//# sourceMappingURL=taskLedgerProposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskLedgerProposal.d.ts","sourceRoot":"","sources":["../../src/lib/taskLedgerProposal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Read-only validation and exact migration proposals for repository task ledgers.
|
|
4
|
+
*
|
|
5
|
+
* This module deliberately has no write or apply function. A proposal is review
|
|
6
|
+
* evidence only; repository mutation remains governed by the existing task_write
|
|
7
|
+
* and Project Brain approval contracts.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.TASK_LEDGER_FIX_PROPOSAL_VERSION = exports.TASK_LEDGER_VALIDATION_VERSION = void 0;
|
|
44
|
+
exports.taskLedgerContextDirs = taskLedgerContextDirs;
|
|
45
|
+
exports.validateTaskLedgers = validateTaskLedgers;
|
|
46
|
+
exports.mechanicalTaskLedgerRepair = mechanicalTaskLedgerRepair;
|
|
47
|
+
exports.proposeTaskLedgerFixes = proposeTaskLedgerFixes;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const canonical_1 = require("./brain/canonical");
|
|
51
|
+
const tasksFile_1 = require("./tasksFile");
|
|
52
|
+
exports.TASK_LEDGER_VALIDATION_VERSION = "you-md/task-ledger-validation/v1";
|
|
53
|
+
exports.TASK_LEDGER_FIX_PROPOSAL_VERSION = "you-md/task-ledger-fix-proposal/v1";
|
|
54
|
+
const TASK_ID = /^t-[A-Za-z0-9][A-Za-z0-9_-]{0,94}$/;
|
|
55
|
+
const DOC_KEYS = new Set(["$schema", "project", "updatedAt", "tasks", "notes"]);
|
|
56
|
+
const TASK_KEYS = new Set([
|
|
57
|
+
"id", "title", "description", "goal", "successCriteria", "parentId", "dependencyIds",
|
|
58
|
+
"scope", "blockers", "clarification", "review", "evidence", "status", "priority",
|
|
59
|
+
"owner", "ownerLabel", "tags", "source", "verify", "createdAt", "updatedAt", "completedAt",
|
|
60
|
+
]);
|
|
61
|
+
function compareText(a, b) {
|
|
62
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
63
|
+
}
|
|
64
|
+
function compareValidation(a, b) {
|
|
65
|
+
return compareText(a.project.toLowerCase(), b.project.toLowerCase())
|
|
66
|
+
|| compareText(a.contextDir, b.contextDir);
|
|
67
|
+
}
|
|
68
|
+
function contentHash(content) {
|
|
69
|
+
return content === null ? null : `sha256:${(0, canonical_1.sha256)(content)}`;
|
|
70
|
+
}
|
|
71
|
+
function regularFileContent(filePath) {
|
|
72
|
+
let stat;
|
|
73
|
+
try {
|
|
74
|
+
stat = fs.lstatSync(filePath);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.code === "ENOENT")
|
|
78
|
+
return { content: null };
|
|
79
|
+
return { content: null, failure: { code: "TASKS_READ_FAILED", message: `cannot inspect ${path.basename(filePath)}` } };
|
|
80
|
+
}
|
|
81
|
+
if (!stat.isFile() || stat.isSymbolicLink()) {
|
|
82
|
+
return { content: null, failure: { code: "TASKS_SYMLINK_REFUSED", message: `${path.basename(filePath)} is not a regular non-symlink file` } };
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
return { content: fs.readFileSync(filePath, "utf8") };
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return { content: null, failure: { code: "TASKS_READ_FAILED", message: `cannot read ${path.basename(filePath)}` } };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function requiresAdoption(contextDir) {
|
|
92
|
+
try {
|
|
93
|
+
(0, tasksFile_1.resolveTaskWriteGrant)(contextDir);
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function asFailure(error) {
|
|
101
|
+
return {
|
|
102
|
+
code: error instanceof tasksFile_1.TasksFileError ? error.code : "TASKS_READ_FAILED",
|
|
103
|
+
message: error instanceof Error ? error.message : "unknown task-ledger read failure",
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function semanticMigrationFailure(content) {
|
|
107
|
+
let raw;
|
|
108
|
+
try {
|
|
109
|
+
raw = JSON.parse(content);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (!isRecord(raw) || !Array.isArray(raw.tasks))
|
|
115
|
+
return null;
|
|
116
|
+
const semanticFields = new Set();
|
|
117
|
+
for (const task of raw.tasks) {
|
|
118
|
+
if (!isRecord(task))
|
|
119
|
+
continue;
|
|
120
|
+
for (const field of ["promptPath", "planPath", "prompt_path", "plan_path", "source_prompts", "completion_criteria"]) {
|
|
121
|
+
if (Object.prototype.hasOwnProperty.call(task, field))
|
|
122
|
+
semanticFields.add(field);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (semanticFields.size === 0)
|
|
126
|
+
return null;
|
|
127
|
+
return {
|
|
128
|
+
code: "TASKS_SEMANTIC_MIGRATION_REQUIRED",
|
|
129
|
+
message: `task fields require explicit semantic mapping: ${[...semanticFields].sort(compareText).join(", ")}`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function inspectTaskLedger(contextDir, requestedProject) {
|
|
133
|
+
const resolvedContextDir = path.resolve(contextDir);
|
|
134
|
+
const identity = (0, tasksFile_1.resolveTaskProjectIdentity)(path.dirname(resolvedContextDir));
|
|
135
|
+
const project = identity.canonical;
|
|
136
|
+
const jsonPath = path.join(resolvedContextDir, "tasks.json");
|
|
137
|
+
const mdPath = path.join(resolvedContextDir, "tasks.md");
|
|
138
|
+
const jsonRead = regularFileContent(jsonPath);
|
|
139
|
+
const mdRead = regularFileContent(mdPath);
|
|
140
|
+
const failures = [];
|
|
141
|
+
let doc = null;
|
|
142
|
+
if (jsonRead.failure)
|
|
143
|
+
failures.push(jsonRead.failure);
|
|
144
|
+
if (mdRead.failure)
|
|
145
|
+
failures.push(mdRead.failure);
|
|
146
|
+
if (requestedProject && !(0, tasksFile_1.taskProjectIdentityMatches)(requestedProject, identity)) {
|
|
147
|
+
failures.push({
|
|
148
|
+
code: "TASKS_INVALID_DOCUMENT",
|
|
149
|
+
message: `requested project ${requestedProject} does not match ${project}`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (!jsonRead.failure && jsonRead.content === null) {
|
|
153
|
+
failures.push({
|
|
154
|
+
code: "TASKS_JSON_MISSING",
|
|
155
|
+
message: mdRead.content === null
|
|
156
|
+
? "canonical tasks.json and generated tasks.md are missing"
|
|
157
|
+
: "canonical tasks.json is missing; legacy tasks.md adoption requires review",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else if (!jsonRead.failure && jsonRead.content !== null) {
|
|
161
|
+
try {
|
|
162
|
+
doc = (0, tasksFile_1.parseTasksJson)(jsonRead.content, identity);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
failures.push(asFailure(error));
|
|
166
|
+
}
|
|
167
|
+
const semanticFailure = semanticMigrationFailure(jsonRead.content);
|
|
168
|
+
if (semanticFailure)
|
|
169
|
+
failures.push(semanticFailure);
|
|
170
|
+
}
|
|
171
|
+
if (doc && !mdRead.failure) {
|
|
172
|
+
if (mdRead.content === null) {
|
|
173
|
+
failures.push({ code: "TASKS_MD_MISSING", message: "generated tasks.md is missing" });
|
|
174
|
+
}
|
|
175
|
+
else if (mdRead.content !== (0, tasksFile_1.renderTasksMd)(doc)) {
|
|
176
|
+
failures.push({ code: "TASKS_MD_DRIFT", message: "tasks.md differs from deterministic tasks.json rendering" });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
failures.sort((a, b) => compareText(a.code, b.code) || compareText(a.message, b.message));
|
|
180
|
+
const base = {
|
|
181
|
+
tasksJson: { path: jsonPath, exists: jsonRead.content !== null, contentHash: contentHash(jsonRead.content) },
|
|
182
|
+
tasksMd: { path: mdPath, exists: mdRead.content !== null, contentHash: contentHash(mdRead.content) },
|
|
183
|
+
};
|
|
184
|
+
const validation = {
|
|
185
|
+
project,
|
|
186
|
+
contextDir: resolvedContextDir,
|
|
187
|
+
status: failures.length === 0 ? "valid" : "invalid",
|
|
188
|
+
valid: failures.length === 0,
|
|
189
|
+
taskCount: doc?.tasks.length ?? rawTaskCount(jsonRead.content),
|
|
190
|
+
adoptionRequired: requiresAdoption(resolvedContextDir),
|
|
191
|
+
base,
|
|
192
|
+
failures,
|
|
193
|
+
};
|
|
194
|
+
return { validation, jsonContent: jsonRead.content, mdContent: mdRead.content, doc };
|
|
195
|
+
}
|
|
196
|
+
function rawTaskCount(content) {
|
|
197
|
+
if (content === null)
|
|
198
|
+
return null;
|
|
199
|
+
try {
|
|
200
|
+
const value = JSON.parse(content);
|
|
201
|
+
return Array.isArray(value?.tasks) ? value.tasks.length : null;
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function taskLedgerContextDirs(contextDirs) {
|
|
208
|
+
return [...new Set(contextDirs.map((contextDir) => path.resolve(contextDir)))]
|
|
209
|
+
.filter((contextDir) => fs.existsSync(path.join(contextDir, "tasks.json")) || fs.existsSync(path.join(contextDir, "tasks.md")))
|
|
210
|
+
.sort(compareText);
|
|
211
|
+
}
|
|
212
|
+
function validateTaskLedgers(contextDirs, scope, requestedProject) {
|
|
213
|
+
const ledgers = contextDirs.map((contextDir) => inspectTaskLedger(contextDir, requestedProject))
|
|
214
|
+
.map((entry) => entry.validation).sort(compareValidation);
|
|
215
|
+
const valid = ledgers.filter((entry) => entry.valid).length;
|
|
216
|
+
return {
|
|
217
|
+
schemaVersion: exports.TASK_LEDGER_VALIDATION_VERSION,
|
|
218
|
+
kind: "task-ledger-validation",
|
|
219
|
+
scope,
|
|
220
|
+
ok: valid === ledgers.length,
|
|
221
|
+
counts: { ledgers: ledgers.length, valid, invalid: ledgers.length - valid },
|
|
222
|
+
ledgers,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function isRecord(value) {
|
|
226
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
227
|
+
}
|
|
228
|
+
function replacementId(oldId, project, index, occupied) {
|
|
229
|
+
const prefixed = `t-${oldId}`;
|
|
230
|
+
if (TASK_ID.test(prefixed) && !occupied.has(prefixed))
|
|
231
|
+
return prefixed;
|
|
232
|
+
let salt = 0;
|
|
233
|
+
while (true) {
|
|
234
|
+
const digest = (0, canonical_1.sha256)((0, canonical_1.canonicalize)({ project, index, oldId, salt })).slice(0, 20);
|
|
235
|
+
const candidate = `t-migrate-${digest}`;
|
|
236
|
+
if (!occupied.has(candidate))
|
|
237
|
+
return candidate;
|
|
238
|
+
salt += 1;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function mechanicalTaskLedgerRepair(content, expectedProject) {
|
|
242
|
+
let raw;
|
|
243
|
+
try {
|
|
244
|
+
raw = JSON.parse(content);
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
if (!isRecord(raw) || raw.$schema !== tasksFile_1.TASKS_SCHEMA || raw.project !== expectedProject || !Array.isArray(raw.tasks))
|
|
250
|
+
return null;
|
|
251
|
+
if (Object.keys(raw).some((key) => !DOC_KEYS.has(key)))
|
|
252
|
+
return null;
|
|
253
|
+
if (raw.tasks.some((task) => !isRecord(task) || Object.keys(task).some((key) => !TASK_KEYS.has(key))))
|
|
254
|
+
return null;
|
|
255
|
+
const taskRecords = raw.tasks;
|
|
256
|
+
const oldTaskIds = taskRecords.map((task) => task.id);
|
|
257
|
+
if (oldTaskIds.some((id) => typeof id !== "string" || !id))
|
|
258
|
+
return null;
|
|
259
|
+
const oldIds = oldTaskIds;
|
|
260
|
+
if (new Set(oldIds).size !== oldIds.length)
|
|
261
|
+
return null;
|
|
262
|
+
const invalidIds = oldIds.filter((id) => !TASK_ID.test(id));
|
|
263
|
+
if (invalidIds.length === 0)
|
|
264
|
+
return null;
|
|
265
|
+
const occupied = new Set(oldIds.filter((id) => TASK_ID.test(id)));
|
|
266
|
+
const replacements = new Map();
|
|
267
|
+
for (let index = 0; index < oldIds.length; index += 1) {
|
|
268
|
+
const oldId = oldIds[index];
|
|
269
|
+
if (TASK_ID.test(oldId))
|
|
270
|
+
continue;
|
|
271
|
+
const next = replacementId(oldId, expectedProject, index, occupied);
|
|
272
|
+
replacements.set(oldId, next);
|
|
273
|
+
occupied.add(next);
|
|
274
|
+
}
|
|
275
|
+
const transformed = JSON.parse(content);
|
|
276
|
+
const transformedTasks = transformed.tasks;
|
|
277
|
+
const operations = [];
|
|
278
|
+
const replaceValue = (pointer, container, key, oldValue) => {
|
|
279
|
+
const next = replacements.get(oldValue);
|
|
280
|
+
if (!next)
|
|
281
|
+
return;
|
|
282
|
+
operations.push({ op: "test", path: pointer, value: oldValue });
|
|
283
|
+
operations.push({ op: "replace", path: pointer, value: next });
|
|
284
|
+
container[key] = next;
|
|
285
|
+
};
|
|
286
|
+
for (let index = 0; index < transformedTasks.length; index += 1) {
|
|
287
|
+
const task = transformedTasks[index];
|
|
288
|
+
replaceValue(`/tasks/${index}/id`, task, "id", String(task.id));
|
|
289
|
+
if (typeof task.parentId === "string")
|
|
290
|
+
replaceValue(`/tasks/${index}/parentId`, task, "parentId", task.parentId);
|
|
291
|
+
if (Array.isArray(task.dependencyIds)) {
|
|
292
|
+
for (let dependencyIndex = 0; dependencyIndex < task.dependencyIds.length; dependencyIndex += 1) {
|
|
293
|
+
const dependencyId = task.dependencyIds[dependencyIndex];
|
|
294
|
+
if (typeof dependencyId === "string") {
|
|
295
|
+
replaceValue(`/tasks/${index}/dependencyIds/${dependencyIndex}`, task.dependencyIds, dependencyIndex, dependencyId);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Older otherwise-v1 ledgers recorded completed work without completedAt.
|
|
300
|
+
// Reusing the task's own updatedAt is deterministic and does not invent a
|
|
301
|
+
// new event time; anything less mechanical remains manual review.
|
|
302
|
+
if (task.status === "done" && task.completedAt === undefined && typeof task.updatedAt === "string") {
|
|
303
|
+
operations.push({ op: "add", path: `/tasks/${index}/completedAt`, value: task.updatedAt });
|
|
304
|
+
task.completedAt = task.updatedAt;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
try {
|
|
308
|
+
const normalized = (0, tasksFile_1.parseTasksJson)(JSON.stringify(transformed), expectedProject);
|
|
309
|
+
return { doc: normalized, content: `${JSON.stringify(transformed, null, 2)}\n`, operations };
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function proposalPreimage(proposal) {
|
|
316
|
+
return proposal;
|
|
317
|
+
}
|
|
318
|
+
function proposalFor(inspected) {
|
|
319
|
+
const { validation, jsonContent, doc } = inspected;
|
|
320
|
+
let classification = "manual_review";
|
|
321
|
+
let level = "high";
|
|
322
|
+
let review = "manual_review";
|
|
323
|
+
let reason = "The ledger contains semantic or ownership decisions that cannot be mapped without human review.";
|
|
324
|
+
let operations = [];
|
|
325
|
+
let resultJsonContent = null;
|
|
326
|
+
let generatedDoc = null;
|
|
327
|
+
const failureCodes = validation.failures.map((failure) => failure.code);
|
|
328
|
+
if (doc && failureCodes.every((code) => code === "TASKS_MD_DRIFT" || code === "TASKS_MD_MISSING")) {
|
|
329
|
+
classification = "generator_drift";
|
|
330
|
+
level = "low";
|
|
331
|
+
review = "exact_patch";
|
|
332
|
+
reason = "Canonical tasks.json is valid; only its deterministic tasks.md companion needs replacement.";
|
|
333
|
+
resultJsonContent = jsonContent;
|
|
334
|
+
generatedDoc = doc;
|
|
335
|
+
}
|
|
336
|
+
else if (jsonContent !== null) {
|
|
337
|
+
const repair = mechanicalTaskLedgerRepair(jsonContent, validation.project);
|
|
338
|
+
if (repair) {
|
|
339
|
+
classification = "mechanical_id_migration";
|
|
340
|
+
level = "medium";
|
|
341
|
+
review = "exact_patch";
|
|
342
|
+
reason = "Noncanonical task IDs can be deterministically prefixed or hashed while preserving exact relationship references; legacy done rows reuse their existing updatedAt as completedAt.";
|
|
343
|
+
operations = repair.operations;
|
|
344
|
+
resultJsonContent = repair.content;
|
|
345
|
+
generatedDoc = repair.doc;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (failureCodes.includes("TASKS_SEMANTIC_MIGRATION_REQUIRED")) {
|
|
349
|
+
reason = "Prompt/plan provenance or completion-criteria fields require an explicit semantic mapping; no lossy patch is emitted.";
|
|
350
|
+
}
|
|
351
|
+
else if (validation.failures.some((failure) => /project must equal/.test(failure.message))) {
|
|
352
|
+
reason = "The repository and ledger disagree on logical project identity; project naming requires an owner decision.";
|
|
353
|
+
}
|
|
354
|
+
const replacement = generatedDoc ? (0, tasksFile_1.renderTasksMd)(generatedDoc) : null;
|
|
355
|
+
const patchDigest = `sha256:${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(operations))}`;
|
|
356
|
+
const withoutRef = {
|
|
357
|
+
schemaVersion: exports.TASK_LEDGER_FIX_PROPOSAL_VERSION,
|
|
358
|
+
kind: "task-ledger-fix-proposal",
|
|
359
|
+
project: validation.project,
|
|
360
|
+
contextDir: validation.contextDir,
|
|
361
|
+
status: "proposed",
|
|
362
|
+
authority: "review_only",
|
|
363
|
+
applySupported: false,
|
|
364
|
+
classification,
|
|
365
|
+
adoptionRequired: validation.adoptionRequired,
|
|
366
|
+
risk: { level, review, reason },
|
|
367
|
+
failures: validation.failures,
|
|
368
|
+
base: validation.base,
|
|
369
|
+
tasksJson: {
|
|
370
|
+
path: validation.base.tasksJson.path,
|
|
371
|
+
patchFormat: "rfc6902",
|
|
372
|
+
operations,
|
|
373
|
+
patchDigest,
|
|
374
|
+
resultContentHash: resultJsonContent === null ? null : contentHash(resultJsonContent),
|
|
375
|
+
},
|
|
376
|
+
tasksMd: {
|
|
377
|
+
path: validation.base.tasksMd.path,
|
|
378
|
+
replacement,
|
|
379
|
+
baseContentHash: validation.base.tasksMd.contentHash,
|
|
380
|
+
replacementContentHash: replacement === null ? null : contentHash(replacement),
|
|
381
|
+
generatedFromTasksJsonHash: resultJsonContent === null ? null : contentHash(resultJsonContent),
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
return {
|
|
385
|
+
...withoutRef,
|
|
386
|
+
proposalRef: `proposal:tasks/${(0, canonical_1.sha256)((0, canonical_1.canonicalize)(proposalPreimage(withoutRef)))}`,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
function proposeTaskLedgerFixes(contextDirs, scope, requestedProject) {
|
|
390
|
+
const inspected = contextDirs.map((contextDir) => inspectTaskLedger(contextDir, requestedProject))
|
|
391
|
+
.sort((a, b) => compareValidation(a.validation, b.validation));
|
|
392
|
+
const proposals = inspected.filter((entry) => !entry.validation.valid).map(proposalFor);
|
|
393
|
+
const exactPatch = proposals.filter((proposal) => proposal.risk.review === "exact_patch").length;
|
|
394
|
+
return {
|
|
395
|
+
schemaVersion: "you-md/task-ledger-fix-proposal-generation/v1",
|
|
396
|
+
kind: "task-ledger-fix-proposal-generation",
|
|
397
|
+
scope,
|
|
398
|
+
ok: true,
|
|
399
|
+
counts: {
|
|
400
|
+
invalid: proposals.length,
|
|
401
|
+
proposals: proposals.length,
|
|
402
|
+
exactPatch,
|
|
403
|
+
manualReview: proposals.length - exactPatch,
|
|
404
|
+
},
|
|
405
|
+
proposals,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=taskLedgerProposal.js.map
|