@vibe-commit/capture 0.9.0 → 0.11.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 (88) hide show
  1. package/README.md +49 -1
  2. package/dist/agent_hooks.js +2 -2
  3. package/dist/cli.d.ts +35 -0
  4. package/dist/cli.js +412 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/backfill.js +19 -2
  7. package/dist/commands/backfill.js.map +1 -1
  8. package/dist/commands/finalize.d.ts +37 -1
  9. package/dist/commands/finalize.js +131 -29
  10. package/dist/commands/finalize.js.map +1 -1
  11. package/dist/commands/status.js +7 -0
  12. package/dist/commands/status.js.map +1 -1
  13. package/dist/commands/status_machine.js +5 -0
  14. package/dist/commands/status_machine.js.map +1 -1
  15. package/dist/commands/upload_worker.d.ts +63 -0
  16. package/dist/commands/upload_worker.js +336 -0
  17. package/dist/commands/upload_worker.js.map +1 -0
  18. package/dist/commands/why.d.ts +19 -1
  19. package/dist/commands/why.js +35 -3
  20. package/dist/commands/why.js.map +1 -1
  21. package/dist/commit_files.d.ts +64 -0
  22. package/dist/commit_files.js +83 -0
  23. package/dist/commit_files.js.map +1 -0
  24. package/dist/copy/strings.d.ts +34 -14
  25. package/dist/copy/strings.js +51 -14
  26. package/dist/copy/strings.js.map +1 -1
  27. package/dist/drain.d.ts +68 -0
  28. package/dist/drain.js +234 -0
  29. package/dist/drain.js.map +1 -0
  30. package/dist/firing.d.ts +169 -0
  31. package/dist/firing.js +334 -0
  32. package/dist/firing.js.map +1 -0
  33. package/dist/hooks/entry.d.ts +171 -26
  34. package/dist/hooks/entry.js +335 -507
  35. package/dist/hooks/entry.js.map +1 -1
  36. package/dist/hooks/fire_lock.d.ts +36 -87
  37. package/dist/hooks/fire_lock.js +40 -99
  38. package/dist/hooks/fire_lock.js.map +1 -1
  39. package/dist/hooks/post_commit.d.ts +11 -0
  40. package/dist/hooks/post_commit.js +16 -8
  41. package/dist/hooks/post_commit.js.map +1 -1
  42. package/dist/identity.d.ts +32 -0
  43. package/dist/identity.js +38 -0
  44. package/dist/identity.js.map +1 -0
  45. package/dist/index.d.ts +3 -17
  46. package/dist/index.js +59 -450
  47. package/dist/index.js.map +1 -1
  48. package/dist/paths.d.ts +18 -0
  49. package/dist/paths.js +31 -0
  50. package/dist/paths.js.map +1 -1
  51. package/dist/pending_prune.d.ts +2 -2
  52. package/dist/pending_prune.js +2 -2
  53. package/dist/policy.d.ts +17 -0
  54. package/dist/policy.js +7 -0
  55. package/dist/policy.js.map +1 -1
  56. package/dist/post.d.ts +63 -4
  57. package/dist/post.js +76 -24
  58. package/dist/post.js.map +1 -1
  59. package/dist/replay.d.ts +167 -0
  60. package/dist/replay.js +301 -0
  61. package/dist/replay.js.map +1 -0
  62. package/dist/session_targets.d.ts +12 -0
  63. package/dist/session_targets.js +6 -1
  64. package/dist/session_targets.js.map +1 -1
  65. package/dist/spool.d.ts +55 -21
  66. package/dist/spool.js +182 -38
  67. package/dist/spool.js.map +1 -1
  68. package/dist/spool_union.d.ts +18 -2
  69. package/dist/spool_union.js +23 -2
  70. package/dist/spool_union.js.map +1 -1
  71. package/dist/state.js +21 -14
  72. package/dist/state.js.map +1 -1
  73. package/dist/stdin.d.ts +2 -0
  74. package/dist/stdin.js +13 -0
  75. package/dist/stdin.js.map +1 -0
  76. package/dist/uploader_status.d.ts +34 -0
  77. package/dist/uploader_status.js +25 -0
  78. package/dist/uploader_status.js.map +1 -0
  79. package/dist/uploader_view.d.ts +39 -0
  80. package/dist/uploader_view.js +106 -0
  81. package/dist/uploader_view.js.map +1 -0
  82. package/dist/verbs.d.ts +11 -0
  83. package/dist/verbs.js +13 -0
  84. package/dist/verbs.js.map +1 -0
  85. package/dist/version.d.ts +1 -1
  86. package/dist/version.js +1 -1
  87. package/dist/version.js.map +1 -1
  88. package/package.json +2 -2
@@ -0,0 +1,106 @@
1
+ /**
2
+ * WHAT `vibecommit status` SAYS ABOUT THE BACKGROUND UPLOADER — U7 (plan §3.8).
3
+ *
4
+ * ⛔ COMPUTED FROM FIRING LOGS AGAINST LEDGERS, NEVER FROM THE WORKER'S OWN CLAIM. A worker that died mid-step leaves a status file that says
5
+ * "running" forever; trusting it would show a dead uploader as healthy (memory: live-state-must-prove-it-is-current). So "how far behind" is the
6
+ * firings nobody has consumed (the hook's own record) measured against what the ledgers say was acknowledged, and "is it running" is the worker's
7
+ * LOCK being fresh (`uploaderAlive`, which dates the lock the way the hook does), with the status file consulted only for WHEN and HOW the last
8
+ * attempts went.
9
+ *
10
+ * `sessions_checked` is the denominator: how many firing logs were looked at. An empty scan (0 of 0) is a different answer than "checked 40, all caught up",
11
+ * and the JSON says which.
12
+ *
13
+ * Counts, classes and times only. No session id, path or body leaves this module.
14
+ */
15
+ import { STATUS, relativeAge } from "./copy/index.js";
16
+ import { firingSessions, readCursor, readFirings } from "./firing.js";
17
+ import { uploaderAlive } from "./hooks/fire_lock.js";
18
+ import { identityDigest } from "./identity.js";
19
+ import { ingestUrl } from "./post.js";
20
+ import { loadTargetRecord } from "./session_targets.js";
21
+ import { fileState, loadSessionState } from "./state.js";
22
+ import { labelled } from "./term.js";
23
+ import { readUploaderStatus } from "./uploader_status.js";
24
+ const DELIVERED = new Set(["done:delivered", "drain:delivered", "more"]);
25
+ function problemOf(klass) {
26
+ if (klass === "later" || klass === "drain:later")
27
+ return "no_answer";
28
+ if (klass.startsWith("fatal:") || klass === "drain:fatal")
29
+ return "credential";
30
+ if (klass.startsWith("threw:") || klass === "escaped")
31
+ return "error";
32
+ return null;
33
+ }
34
+ export function uploaderView(home, env, nowMs) {
35
+ const stems = firingSessions(home);
36
+ let sessions = 0;
37
+ let bytes = 0;
38
+ for (const stem of stems) {
39
+ const cursor = readCursor(home, stem);
40
+ const owed = readFirings(home, stem, cursor.offset).firings;
41
+ if (owed.length === 0)
42
+ continue;
43
+ sessions += 1;
44
+ // What the NEWEST owed firing wants delivered, less what the slowest of the session's ledgers has acknowledged. A session the worker has not
45
+ // reached has no record yet: all of it is owed.
46
+ const last = owed[owed.length - 1].firing;
47
+ const record = loadTargetRecord(home, last.sid);
48
+ const acked = record === null || record.targets.length === 0
49
+ ? 0
50
+ : Math.min(...record.targets.map((target) => fileState(loadSessionState(home, { repoKey: target.ledgerKey, sessionId: last.sid }), "main").sentOffset));
51
+ bytes += Math.max(0, last.eof - acked);
52
+ }
53
+ const url = ingestUrl(env);
54
+ const identity = url === null ? null : identityDigest({ url, env });
55
+ const status = identity === null ? null : readUploaderStatus(home, identity);
56
+ const alive = identity !== null && uploaderAlive(home, identity, nowMs);
57
+ const outcomes = status?.outcomes ?? [];
58
+ const ack = [...outcomes].reverse().find((outcome) => DELIVERED.has(outcome.class)) ?? null;
59
+ const attempt = outcomes.length === 0 ? null : outcomes[outcomes.length - 1];
60
+ const problem = attempt === null ? null : problemOf(attempt.class);
61
+ let state;
62
+ if (sessions === 0)
63
+ state = "up_to_date";
64
+ else if (!alive)
65
+ state = "not_running";
66
+ else if (problem === "no_answer" && (ack === null || attempt === null || attempt.at >= ack.at))
67
+ state = "waiting_to_retry";
68
+ else
69
+ state = "sending";
70
+ return {
71
+ state,
72
+ heartbeatAgeMs: status === null ? null : Math.max(0, nowMs - status.heartbeatAt),
73
+ behind: { sessions, bytes, sessionsChecked: stems.length },
74
+ lastAckAtMs: ack === null ? null : ack.at,
75
+ lastAttempt: attempt === null ? null : { atMs: attempt.at, outcome: attempt.class, problem, elapsedMs: attempt.elapsedMs },
76
+ };
77
+ }
78
+ /** The `--json` `uploader` object (plan §3.8). `last_attempt.status` is `null`: the worker records the class of an attempt, not an HTTP status (a recorded deviation). */
79
+ export function uploaderJson(view) {
80
+ return {
81
+ state: view.state,
82
+ heartbeat_age_ms: view.heartbeatAgeMs,
83
+ behind: { sessions: view.behind.sessions, bytes: view.behind.bytes, sessions_checked: view.behind.sessionsChecked },
84
+ last_ack_at_ms: view.lastAckAtMs,
85
+ last_attempt: view.lastAttempt === null ? null : { at_ms: view.lastAttempt.atMs, outcome: view.lastAttempt.outcome, status: null, elapsed_ms: view.lastAttempt.elapsedMs },
86
+ };
87
+ }
88
+ /** The screen rows: none until something has ever been recorded for upload (an empty scan says nothing, and the JSON still reports `sessions_checked: 0`). */
89
+ export function uploaderRows(view, nowMs, indent) {
90
+ if (view.behind.sessionsChecked === 0)
91
+ return [];
92
+ const rows = [
93
+ labelled(indent, STATUS.uploadLabel, STATUS.uploadValue({
94
+ state: view.state,
95
+ sessions: view.behind.sessions,
96
+ bytes: view.behind.bytes,
97
+ ackAge: view.lastAckAtMs === null ? null : relativeAge(view.lastAckAtMs, nowMs),
98
+ attemptAge: view.lastAttempt === null ? null : relativeAge(view.lastAttempt.atMs, nowMs),
99
+ problem: view.lastAttempt?.problem ?? null,
100
+ })),
101
+ ];
102
+ if (view.state === "not_running")
103
+ rows.push(labelled(indent, "", STATUS.uploadNotRunning));
104
+ return rows;
105
+ }
106
+ //# sourceMappingURL=uploader_view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploader_view.js","sourceRoot":"","sources":["../src/uploader_view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The public verbs, in the order `--help` lists them.
3
+ *
4
+ * Its own module so `index.ts` can answer `isVerb` without importing a single verb: `index.ts` is the process a hook is, and
5
+ * it must stay free of the interactive half (`cli.ts`; `test/load-path.test.ts`). `renderHelp` iterates this list, so adding
6
+ * a verb here moves `test/help.golden.txt` on purpose. The hidden verbs (`hook`, `post-commit`, `post-rewrite`) are NOT here
7
+ * for exactly that reason.
8
+ */
9
+ export declare const VERBS: readonly ["auth", "connect", "scan", "backfill", "status", "off", "why", "report", "finalize"];
10
+ export type Verb = (typeof VERBS)[number];
11
+ export declare function isVerb(value: string): value is Verb;
package/dist/verbs.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The public verbs, in the order `--help` lists them.
3
+ *
4
+ * Its own module so `index.ts` can answer `isVerb` without importing a single verb: `index.ts` is the process a hook is, and
5
+ * it must stay free of the interactive half (`cli.ts`; `test/load-path.test.ts`). `renderHelp` iterates this list, so adding
6
+ * a verb here moves `test/help.golden.txt` on purpose. The hidden verbs (`hook`, `post-commit`, `post-rewrite`) are NOT here
7
+ * for exactly that reason.
8
+ */
9
+ export const VERBS = ["auth", "connect", "scan", "backfill", "status", "off", "why", "report", "finalize"];
10
+ export function isVerb(value) {
11
+ return VERBS.includes(value);
12
+ }
13
+ //# sourceMappingURL=verbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbs.js","sourceRoot":"","sources":["../src/verbs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAGpH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAQ,KAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
package/dist/version.d.ts CHANGED
@@ -11,6 +11,6 @@
11
11
  * fields on disk (D58 plan §ER5/§ER14). This constant plus the skew check is the
12
12
  * whole fix: one source, asserted equal to the manifest and to the release tag.
13
13
  */
14
- export declare const CLIENT_VERSION = "0.9.0";
14
+ export declare const CLIENT_VERSION = "0.11.0";
15
15
  /** Header name for the wire contract. */
16
16
  export declare const CLIENT_VERSION_HEADER = "X-Client-Version";
package/dist/version.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * fields on disk (D58 plan §ER5/§ER14). This constant plus the skew check is the
12
12
  * whole fix: one source, asserted equal to the manifest and to the release tag.
13
13
  */
14
- export const CLIENT_VERSION = "0.9.0";
14
+ export const CLIENT_VERSION = "0.11.0";
15
15
  /** Header name for the wire contract. */
16
16
  export const CLIENT_VERSION_HEADER = "X-Client-Version";
17
17
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,yCAAyC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC,yCAAyC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-commit/capture",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "description": "VibeCommit capture client \u2014 records Claude Code sessions against the commits they produced.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,5 +43,5 @@
43
43
  "tsx": "^4.19.2",
44
44
  "typescript": "^5.7.3"
45
45
  },
46
- "gitHead": "51de4942744d9e8cd8c3c2e78331d340cdd596f6"
46
+ "gitHead": "7b05f0790d7c1bbcd3486e88b32e924a02e3ea49"
47
47
  }