@latchet/core 0.1.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.
Files changed (49) hide show
  1. package/dist/src/diff.d.ts +15 -0
  2. package/dist/src/diff.d.ts.map +1 -0
  3. package/dist/src/diff.js +29 -0
  4. package/dist/src/diff.js.map +1 -0
  5. package/dist/src/errors.d.ts +4 -0
  6. package/dist/src/errors.d.ts.map +1 -0
  7. package/dist/src/errors.js +7 -0
  8. package/dist/src/errors.js.map +1 -0
  9. package/dist/src/exporters.d.ts +4 -0
  10. package/dist/src/exporters.d.ts.map +1 -0
  11. package/dist/src/exporters.js +16 -0
  12. package/dist/src/exporters.js.map +1 -0
  13. package/dist/src/git.d.ts +3 -0
  14. package/dist/src/git.d.ts.map +1 -0
  15. package/dist/src/git.js +29 -0
  16. package/dist/src/git.js.map +1 -0
  17. package/dist/src/importers.d.ts +4 -0
  18. package/dist/src/importers.d.ts.map +1 -0
  19. package/dist/src/importers.js +35 -0
  20. package/dist/src/importers.js.map +1 -0
  21. package/dist/src/index.d.ts +11 -0
  22. package/dist/src/index.d.ts.map +1 -0
  23. package/dist/src/index.js +11 -0
  24. package/dist/src/index.js.map +1 -0
  25. package/dist/src/markdown.d.ts +3 -0
  26. package/dist/src/markdown.d.ts.map +1 -0
  27. package/dist/src/markdown.js +69 -0
  28. package/dist/src/markdown.js.map +1 -0
  29. package/dist/src/projector.d.ts +3 -0
  30. package/dist/src/projector.d.ts.map +1 -0
  31. package/dist/src/projector.js +89 -0
  32. package/dist/src/projector.js.map +1 -0
  33. package/dist/src/redact.d.ts +10 -0
  34. package/dist/src/redact.d.ts.map +1 -0
  35. package/dist/src/redact.js +223 -0
  36. package/dist/src/redact.js.map +1 -0
  37. package/dist/src/store.d.ts +44 -0
  38. package/dist/src/store.d.ts.map +1 -0
  39. package/dist/src/store.js +273 -0
  40. package/dist/src/store.js.map +1 -0
  41. package/dist/src/utils.d.ts +14 -0
  42. package/dist/src/utils.d.ts.map +1 -0
  43. package/dist/src/utils.js +78 -0
  44. package/dist/src/utils.js.map +1 -0
  45. package/dist/src/verify.d.ts +3 -0
  46. package/dist/src/verify.d.ts.map +1 -0
  47. package/dist/src/verify.js +33 -0
  48. package/dist/src/verify.js.map +1 -0
  49. package/package.json +28 -0
@@ -0,0 +1,15 @@
1
+ import type { TaskState } from "@latchet/spec";
2
+ export interface StateDiff {
3
+ decisions_added: string[];
4
+ decisions_removed: string[];
5
+ failures_added: string[];
6
+ failures_removed: string[];
7
+ env_quirks_added: string[];
8
+ env_quirks_removed: string[];
9
+ next_action_changed: {
10
+ before: string | null;
11
+ after: string | null;
12
+ };
13
+ }
14
+ export declare function diffStates(before: TaskState, after: TaskState): StateDiff;
15
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,mBAAmB,EAAE;QACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAeD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAyBzE"}
@@ -0,0 +1,29 @@
1
+ function values(items) {
2
+ return new Set(items);
3
+ }
4
+ function delta(before, after) {
5
+ const beforeSet = values(before);
6
+ const afterSet = values(after);
7
+ return {
8
+ added: after.filter((item) => !beforeSet.has(item)),
9
+ removed: before.filter((item) => !afterSet.has(item))
10
+ };
11
+ }
12
+ export function diffStates(before, after) {
13
+ const decisions = delta(before.active_decisions.map((event) => event.payload.summary), after.active_decisions.map((event) => event.payload.summary));
14
+ const quirks = delta(before.active_env_quirks.map((event) => event.payload.summary), after.active_env_quirks.map((event) => event.payload.summary));
15
+ const failures = delta(before.recent_failures.map((event) => event.payload.summary), after.recent_failures.map((event) => event.payload.summary));
16
+ return {
17
+ decisions_added: decisions.added,
18
+ decisions_removed: decisions.removed,
19
+ failures_added: failures.added,
20
+ failures_removed: failures.removed,
21
+ env_quirks_added: quirks.added,
22
+ env_quirks_removed: quirks.removed,
23
+ next_action_changed: {
24
+ before: before.next_action?.payload.summary ?? null,
25
+ after: after.next_action?.payload.summary ?? null
26
+ }
27
+ };
28
+ }
29
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"AAeA,SAAS,MAAM,CAAC,KAAe;IAC7B,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,KAAK,CAAC,MAAgB,EAAE,KAAe;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB,EAAE,KAAgB;IAC5D,MAAM,SAAS,GAAG,KAAK,CACrB,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAC7D,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAC7D,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAClB,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAC9D,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAC9D,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CACpB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAC5D,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5D,CAAC;IACF,OAAO;QACL,eAAe,EAAE,SAAS,CAAC,KAAK;QAChC,iBAAiB,EAAE,SAAS,CAAC,OAAO;QACpC,cAAc,EAAE,QAAQ,CAAC,KAAK;QAC9B,gBAAgB,EAAE,QAAQ,CAAC,OAAO;QAClC,gBAAgB,EAAE,MAAM,CAAC,KAAK;QAC9B,kBAAkB,EAAE,MAAM,CAAC,OAAO;QAClC,mBAAmB,EAAE;YACnB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YACnD,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;SAClD;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare class LedgerError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,7 @@
1
+ export class LedgerError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "LedgerError";
5
+ }
6
+ }
7
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { HandoffPack, LedgerEvent, TaskState } from "@latchet/spec";
2
+ export declare function createHandoffPack(state: TaskState, events?: LedgerEvent[]): HandoffPack;
3
+ export declare function exportMarkdown(state: TaskState): string;
4
+ //# sourceMappingURL=exporters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporters.d.ts","sourceRoot":"","sources":["../../src/exporters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,WAAW,CASvF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,16 @@
1
+ import { HANDOFF_FORMAT, TASK_LEDGER_VERSION } from "@latchet/spec";
2
+ import { renderStateMarkdown } from "./markdown.js";
3
+ export function createHandoffPack(state, events) {
4
+ return {
5
+ version: TASK_LEDGER_VERSION,
6
+ format: HANDOFF_FORMAT,
7
+ exported_at: new Date().toISOString(),
8
+ task: state.task,
9
+ state,
10
+ events
11
+ };
12
+ }
13
+ export function exportMarkdown(state) {
14
+ return renderStateMarkdown(state);
15
+ }
16
+ //# sourceMappingURL=exporters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporters.js","sourceRoot":"","sources":["../../src/exporters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,KAAgB,EAAE,MAAsB;IACxE,OAAO;QACL,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GitSnapshot } from "@latchet/spec";
2
+ export declare function getGitSnapshot(cwd: string): GitSnapshot | undefined;
3
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAcjD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAcnE"}
@@ -0,0 +1,29 @@
1
+ import { execFileSync } from "node:child_process";
2
+ function git(args, cwd) {
3
+ try {
4
+ return execFileSync("git", args, {
5
+ cwd,
6
+ encoding: "utf8",
7
+ stdio: ["ignore", "pipe", "ignore"]
8
+ }).trim();
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ }
14
+ export function getGitSnapshot(cwd) {
15
+ const root = git(["rev-parse", "--show-toplevel"], cwd);
16
+ if (!root) {
17
+ return undefined;
18
+ }
19
+ const branch = git(["branch", "--show-current"], cwd) ?? undefined;
20
+ const commit = git(["rev-parse", "HEAD"], cwd) ?? undefined;
21
+ const dirty = Boolean(git(["status", "--porcelain"], cwd));
22
+ return {
23
+ root,
24
+ branch,
25
+ commit,
26
+ dirty
27
+ };
28
+ }
29
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,SAAS,GAAG,CAAC,IAAc,EAAE,GAAW;IACtC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;IACnE,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { HandoffPack, LedgerEvent, TaskState } from "@latchet/spec";
2
+ export declare function readImportFile(path: string): HandoffPack | TaskState | LedgerEvent[];
3
+ export declare function stateToSyntheticEvents(taskId: string, state: TaskState): LedgerEvent[];
4
+ //# sourceMappingURL=importers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importers.d.ts","sourceRoot":"","sources":["../../src/importers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,WAAW,EACX,WAAW,EAGX,SAAS,EACV,MAAM,eAAe,CAAC;AAGvB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,EAAE,CAQpF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,CAyBtF"}
@@ -0,0 +1,35 @@
1
+ import { fileExists, readJson, readJsonLines } from "./utils.js";
2
+ export function readImportFile(path) {
3
+ if (!fileExists(path)) {
4
+ throw new Error(`Import file not found: ${path}`);
5
+ }
6
+ if (path.endsWith(".jsonl")) {
7
+ return readJsonLines(path);
8
+ }
9
+ return readJson(path);
10
+ }
11
+ export function stateToSyntheticEvents(taskId, state) {
12
+ const events = [];
13
+ const stamp = state.generated_at;
14
+ function push(type, payload) {
15
+ events.push({
16
+ id: `imp_${events.length + 1}`,
17
+ task_id: taskId,
18
+ timestamp: stamp,
19
+ actor: { kind: "system", name: "import" },
20
+ source: { kind: "import", provider: "latchet" },
21
+ type,
22
+ payload
23
+ });
24
+ }
25
+ state.active_decisions.forEach((event) => push("decision", event.payload));
26
+ state.recent_failures.forEach((event) => push("failure", event.payload));
27
+ state.active_env_quirks.forEach((event) => push("env_quirk", event.payload));
28
+ state.open_questions.forEach((event) => push("open_question", event.payload));
29
+ state.artifact_refs.forEach((event) => push("artifact_ref", event.payload));
30
+ if (state.next_action) {
31
+ push("next_action", state.next_action.payload);
32
+ }
33
+ return events;
34
+ }
35
+ //# sourceMappingURL=importers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importers.js","sourceRoot":"","sources":["../../src/importers.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAc,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,QAAQ,CAA0B,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,KAAgB;IACrE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IAEjC,SAAS,IAAI,CAAW,IAAyB,EAAE,OAAiB;QAClE,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/C,IAAI;YACJ,OAAO;SACO,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAkB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAiB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACzF,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAkB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9F,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAsB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAqB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAoB,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from "./diff.js";
2
+ export * from "./errors.js";
3
+ export * from "./exporters.js";
4
+ export * from "./git.js";
5
+ export * from "./importers.js";
6
+ export * from "./markdown.js";
7
+ export * from "./projector.js";
8
+ export * from "./redact.js";
9
+ export * from "./store.js";
10
+ export * from "./verify.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from "./diff.js";
2
+ export * from "./errors.js";
3
+ export * from "./exporters.js";
4
+ export * from "./git.js";
5
+ export * from "./importers.js";
6
+ export * from "./markdown.js";
7
+ export * from "./projector.js";
8
+ export * from "./redact.js";
9
+ export * from "./store.js";
10
+ export * from "./verify.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TaskState } from "@latchet/spec";
2
+ export declare function renderStateMarkdown(state: TaskState): string;
3
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAiF5D"}
@@ -0,0 +1,69 @@
1
+ function renderList(lines) {
2
+ return lines.length > 0 ? lines.map((line) => `- ${line}`).join("\n") : "- None";
3
+ }
4
+ export function renderStateMarkdown(state) {
5
+ const task = state.task;
6
+ const freshnessLines = state.freshness
7
+ ? state.freshness.checks.map((check) => `${check.ok ? "OK" : "WARN"}: ${check.message}`)
8
+ : [];
9
+ return [
10
+ `# ${task.title}`,
11
+ "",
12
+ `Goal: ${task.goal}`,
13
+ `Status: ${task.status}`,
14
+ `Task ID: ${task.id}`,
15
+ `Generated: ${state.generated_at}`,
16
+ "",
17
+ "## Active Constraints",
18
+ renderList(state.active_constraints.map((event) => event.payload.summary)),
19
+ "",
20
+ "## Active Decisions",
21
+ renderList(state.active_decisions.map((event) => event.payload.reason ? `${event.payload.summary} — ${event.payload.reason}` : event.payload.summary)),
22
+ "",
23
+ "## Recent Attempts",
24
+ renderList(state.recent_attempts?.map((event) => {
25
+ const suffix = event.payload.outcome ? ` — ${event.payload.outcome}` : "";
26
+ const result = event.payload.result ?? "unknown";
27
+ return `[${result}] ${event.payload.summary}${suffix}`;
28
+ }) ?? []),
29
+ "",
30
+ "## Recent Failures",
31
+ renderList(state.recent_failures.map((event) => {
32
+ const suffix = event.payload.error ? ` — ${event.payload.error}` : "";
33
+ const status = event.payload.status ?? "open";
34
+ return `[${status}] ${event.payload.summary}${suffix}`;
35
+ })),
36
+ "",
37
+ "## Environment Quirks",
38
+ renderList(state.active_env_quirks.map((event) => {
39
+ const parts = [event.payload.summary];
40
+ if (event.payload.workaround) {
41
+ parts.push(`workaround: ${event.payload.workaround}`);
42
+ }
43
+ return parts.join(" — ");
44
+ })),
45
+ "",
46
+ "## Open Questions",
47
+ renderList(state.open_questions.map((event) => event.payload.question)),
48
+ "",
49
+ "## Next Action",
50
+ state.next_action
51
+ ? renderList([
52
+ `${state.next_action.payload.summary}${state.next_action.payload.priority ? ` [${state.next_action.payload.priority}]` : ""}`
53
+ ])
54
+ : "- None",
55
+ "",
56
+ "## Artifact References",
57
+ renderList(state.artifact_refs.map((event) => event.payload.revision ? `${event.payload.path} @ ${event.payload.revision}` : event.payload.path)),
58
+ "",
59
+ "## Blockers",
60
+ renderList(state.blockers),
61
+ "",
62
+ "## Freshness",
63
+ renderList(freshnessLines),
64
+ "",
65
+ "## Notes",
66
+ renderList(state.notes.map((event) => event.payload.summary))
67
+ ].join("\n");
68
+ }
69
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/markdown.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,KAAe;IACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS;QACpC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACxF,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,KAAK,IAAI,CAAC,KAAK,EAAE;QACjB,EAAE;QACF,SAAS,IAAI,CAAC,IAAI,EAAE;QACpB,WAAW,IAAI,CAAC,MAAM,EAAE;QACxB,YAAY,IAAI,CAAC,EAAE,EAAE;QACrB,cAAc,KAAK,CAAC,YAAY,EAAE;QAClC,EAAE;QACF,uBAAuB;QACvB,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,EAAE;QACF,qBAAqB;QACrB,UAAU,CACR,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CACpG,CACF;QACD,EAAE;QACF,oBAAoB;QACpB,UAAU,CACR,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;YACjD,OAAO,IAAI,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;QACzD,CAAC,CAAC,IAAI,EAAE,CACT;QACD,EAAE;QACF,oBAAoB;QACpB,UAAU,CACR,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;YAC9C,OAAO,IAAI,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;QACzD,CAAC,CAAC,CACH;QACD,EAAE;QACF,uBAAuB;QACvB,UAAU,CACR,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CACH;QACD,EAAE;QACF,mBAAmB;QACnB,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvE,EAAE;QACF,gBAAgB;QAChB,KAAK,CAAC,WAAW;YACf,CAAC,CAAC,UAAU,CAAC;gBACT,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,GAClC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EACpF,EAAE;aACH,CAAC;YACJ,CAAC,CAAC,QAAQ;QACZ,EAAE;QACF,wBAAwB;QACxB,UAAU,CACR,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAClG,CACF;QACD,EAAE;QACF,aAAa;QACb,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1B,EAAE;QACF,cAAc;QACd,UAAU,CAAC,cAAc,CAAC;QAC1B,EAAE;QACF,UAAU;QACV,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FreshnessReport, LedgerEvent, TaskMetadata, TaskState } from "@latchet/spec";
2
+ export declare function deriveTaskState(task: TaskMetadata, events: LedgerEvent[], freshness?: FreshnessReport): TaskState;
3
+ //# sourceMappingURL=projector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projector.d.ts","sourceRoot":"","sources":["../../src/projector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAQV,eAAe,EACf,WAAW,EAIX,YAAY,EACZ,SAAS,EAEV,MAAM,eAAe,CAAC;AAoDvB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,SAAS,CAAC,EAAE,eAAe,GAC1B,SAAS,CAwDX"}
@@ -0,0 +1,89 @@
1
+ import { TASK_LEDGER_VERSION } from "@latchet/spec";
2
+ import { nowIso, uniqueBy } from "./utils.js";
3
+ function sortEvents(events) {
4
+ return [...events].sort((a, b) => {
5
+ if (a.timestamp === b.timestamp) {
6
+ return a.id.localeCompare(b.id);
7
+ }
8
+ return a.timestamp.localeCompare(b.timestamp);
9
+ });
10
+ }
11
+ function collectSuperseded(events) {
12
+ const superseded = new Set();
13
+ for (const event of events) {
14
+ for (const target of event.supersedes ?? []) {
15
+ superseded.add(target);
16
+ }
17
+ }
18
+ return superseded;
19
+ }
20
+ function latestStatus(task, events, superseded) {
21
+ const statusEvent = [...events]
22
+ .reverse()
23
+ .find((event) => event.type === "status_change" && !superseded.has(event.id));
24
+ if (!statusEvent) {
25
+ return task.status;
26
+ }
27
+ return statusEvent.payload.to;
28
+ }
29
+ function filterActive(events, type, superseded) {
30
+ return events
31
+ .filter((event) => event.type === type && !superseded.has(event.id))
32
+ .map((event) => event);
33
+ }
34
+ function latestActive(events, type, superseded) {
35
+ const active = filterActive(events, type, superseded);
36
+ return active.length > 0 ? active[active.length - 1] : null;
37
+ }
38
+ export function deriveTaskState(task, events, freshness) {
39
+ const ordered = sortEvents(events);
40
+ const superseded = collectSuperseded(ordered);
41
+ const activeConstraints = filterActive(ordered, "constraint", superseded);
42
+ const activeDecisions = filterActive(ordered, "decision", superseded)
43
+ .filter((event) => {
44
+ const status = event.payload.status ?? "accepted";
45
+ return status === "accepted" || status === "proposed";
46
+ });
47
+ const recentAttempts = filterActive(ordered, "attempt", superseded).slice(-10).reverse();
48
+ const recentFailures = filterActive(ordered, "failure", superseded).slice(-10).reverse();
49
+ const activeEnvQuirks = filterActive(ordered, "env_quirk", superseded);
50
+ const openQuestions = filterActive(ordered, "open_question", superseded);
51
+ const nextAction = latestActive(ordered, "next_action", superseded);
52
+ const artifactRefs = uniqueBy(filterActive(ordered, "artifact_ref", superseded).reverse(), (event) => event.payload.path);
53
+ const notes = filterActive(ordered, "note", superseded).slice(-10).reverse();
54
+ const openFailures = recentFailures.filter((event) => (event.payload.status ?? "open") !== "resolved");
55
+ const blockers = [
56
+ ...openFailures.map((event) => event.payload.summary),
57
+ ...activeEnvQuirks
58
+ .filter((event) => Boolean(event.payload.impact))
59
+ .map((event) => `${event.payload.summary}${event.payload.impact ? ` (${event.payload.impact})` : ""}`)
60
+ ];
61
+ return {
62
+ version: TASK_LEDGER_VERSION,
63
+ generated_at: nowIso(),
64
+ task: {
65
+ ...task,
66
+ status: latestStatus(task, ordered, superseded),
67
+ updated_at: ordered[ordered.length - 1]?.timestamp ?? task.updated_at
68
+ },
69
+ counts: {
70
+ total_events: ordered.length,
71
+ active_decisions: activeDecisions.length,
72
+ open_failures: openFailures.length,
73
+ env_quirks: activeEnvQuirks.length,
74
+ open_questions: openQuestions.length
75
+ },
76
+ active_constraints: activeConstraints,
77
+ active_decisions: activeDecisions,
78
+ recent_attempts: recentAttempts,
79
+ recent_failures: recentFailures,
80
+ active_env_quirks: activeEnvQuirks,
81
+ open_questions: openQuestions,
82
+ next_action: nextAction,
83
+ blockers,
84
+ artifact_refs: artifactRefs,
85
+ notes,
86
+ freshness
87
+ };
88
+ }
89
+ //# sourceMappingURL=projector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projector.js","sourceRoot":"","sources":["../../src/projector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { HandoffPack, TaskState } from "@latchet/spec";
2
+ export interface RedactionOptions {
3
+ removePaths?: boolean;
4
+ removeRevisions?: boolean;
5
+ removeReasons?: boolean;
6
+ maskSecrets?: boolean;
7
+ }
8
+ export declare function redactState(state: TaskState, options: RedactionOptions): TaskState;
9
+ export declare function redactHandoff(pack: HandoffPack, options: RedactionOptions): HandoffPack;
10
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/redact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAiFlF;AA8FD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,WAAW,CASvF"}