@aligndottech/cli 0.37.0 → 0.38.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 (202) hide show
  1. package/README.md +16 -10
  2. package/dist/cli.d.ts +28 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +98 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/check.d.ts +1 -1
  7. package/dist/commands/check.d.ts.map +1 -1
  8. package/dist/commands/check.js +44 -2
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/connect-agents.d.ts +1 -0
  11. package/dist/commands/connect-agents.d.ts.map +1 -1
  12. package/dist/commands/connect-agents.js +10 -6
  13. package/dist/commands/connect-agents.js.map +1 -1
  14. package/dist/commands/connect.d.ts +31 -0
  15. package/dist/commands/connect.d.ts.map +1 -0
  16. package/dist/commands/connect.js +92 -0
  17. package/dist/commands/connect.js.map +1 -0
  18. package/dist/commands/context.d.ts.map +1 -1
  19. package/dist/commands/context.js +52 -10
  20. package/dist/commands/context.js.map +1 -1
  21. package/dist/commands/decisions/index.d.ts.map +1 -1
  22. package/dist/commands/decisions/index.js +5 -0
  23. package/dist/commands/decisions/index.js.map +1 -1
  24. package/dist/commands/default-action.d.ts +3 -1
  25. package/dist/commands/default-action.d.ts.map +1 -1
  26. package/dist/commands/default-action.js +29 -27
  27. package/dist/commands/default-action.js.map +1 -1
  28. package/dist/commands/export.d.ts.map +1 -1
  29. package/dist/commands/export.js +3 -0
  30. package/dist/commands/export.js.map +1 -1
  31. package/dist/commands/import/sessions.d.ts +10 -2
  32. package/dist/commands/import/sessions.d.ts.map +1 -1
  33. package/dist/commands/import/sessions.js +98 -3
  34. package/dist/commands/import/sessions.js.map +1 -1
  35. package/dist/commands/import.d.ts +7 -0
  36. package/dist/commands/import.d.ts.map +1 -1
  37. package/dist/commands/import.js +42 -2
  38. package/dist/commands/import.js.map +1 -1
  39. package/dist/commands/invite.d.ts +25 -0
  40. package/dist/commands/invite.d.ts.map +1 -0
  41. package/dist/commands/invite.js +68 -0
  42. package/dist/commands/invite.js.map +1 -0
  43. package/dist/commands/links.d.ts.map +1 -1
  44. package/dist/commands/links.js +5 -0
  45. package/dist/commands/links.js.map +1 -1
  46. package/dist/commands/mcp.d.ts +64 -35
  47. package/dist/commands/mcp.d.ts.map +1 -1
  48. package/dist/commands/mcp.js +85 -40
  49. package/dist/commands/mcp.js.map +1 -1
  50. package/dist/commands/ratify.d.ts.map +1 -1
  51. package/dist/commands/ratify.js +21 -0
  52. package/dist/commands/ratify.js.map +1 -1
  53. package/dist/commands/registry.d.ts +30 -0
  54. package/dist/commands/registry.d.ts.map +1 -0
  55. package/dist/commands/registry.js +70 -0
  56. package/dist/commands/registry.js.map +1 -0
  57. package/dist/commands/setup.d.ts +45 -1
  58. package/dist/commands/setup.d.ts.map +1 -1
  59. package/dist/commands/setup.js +197 -88
  60. package/dist/commands/setup.js.map +1 -1
  61. package/dist/commands/status.d.ts.map +1 -1
  62. package/dist/commands/status.js +10 -22
  63. package/dist/commands/status.js.map +1 -1
  64. package/dist/commands/telemetry.d.ts +7 -3
  65. package/dist/commands/telemetry.d.ts.map +1 -1
  66. package/dist/commands/telemetry.js +12 -7
  67. package/dist/commands/telemetry.js.map +1 -1
  68. package/dist/commands/why.d.ts.map +1 -1
  69. package/dist/commands/why.js +54 -12
  70. package/dist/commands/why.js.map +1 -1
  71. package/dist/index.js +4 -90
  72. package/dist/index.js.map +1 -1
  73. package/dist/lib/agent-rules.d.ts +1 -0
  74. package/dist/lib/agent-rules.d.ts.map +1 -1
  75. package/dist/lib/agent-rules.js +60 -0
  76. package/dist/lib/agent-rules.js.map +1 -1
  77. package/dist/lib/capture-report.d.ts +4 -0
  78. package/dist/lib/capture-report.d.ts.map +1 -1
  79. package/dist/lib/capture-report.js +18 -1
  80. package/dist/lib/capture-report.js.map +1 -1
  81. package/dist/lib/commands-doc.d.ts +15 -0
  82. package/dist/lib/commands-doc.d.ts.map +1 -0
  83. package/dist/lib/commands-doc.js +85 -0
  84. package/dist/lib/commands-doc.js.map +1 -0
  85. package/dist/lib/config.d.ts +14 -2
  86. package/dist/lib/config.d.ts.map +1 -1
  87. package/dist/lib/config.js +7 -0
  88. package/dist/lib/config.js.map +1 -1
  89. package/dist/lib/connect-prompt.d.ts +1 -1
  90. package/dist/lib/connect-prompt.js +2 -2
  91. package/dist/lib/connect-prompt.js.map +1 -1
  92. package/dist/lib/decision-links.d.ts +39 -0
  93. package/dist/lib/decision-links.d.ts.map +1 -1
  94. package/dist/lib/decision-links.js +51 -0
  95. package/dist/lib/decision-links.js.map +1 -1
  96. package/dist/lib/fetchers/linear.d.ts.map +1 -1
  97. package/dist/lib/fetchers/linear.js +27 -1
  98. package/dist/lib/fetchers/linear.js.map +1 -1
  99. package/dist/lib/fetchers/slack.d.ts +12 -1
  100. package/dist/lib/fetchers/slack.d.ts.map +1 -1
  101. package/dist/lib/fetchers/slack.js +12 -1
  102. package/dist/lib/fetchers/slack.js.map +1 -1
  103. package/dist/lib/first-decision.d.ts +22 -0
  104. package/dist/lib/first-decision.d.ts.map +1 -0
  105. package/dist/lib/first-decision.js +22 -0
  106. package/dist/lib/first-decision.js.map +1 -0
  107. package/dist/lib/gateway-client.d.ts +13 -0
  108. package/dist/lib/gateway-client.d.ts.map +1 -1
  109. package/dist/lib/gateway-client.js +38 -0
  110. package/dist/lib/gateway-client.js.map +1 -1
  111. package/dist/lib/git.d.ts +28 -0
  112. package/dist/lib/git.d.ts.map +1 -1
  113. package/dist/lib/git.js +42 -0
  114. package/dist/lib/git.js.map +1 -1
  115. package/dist/lib/hook-context.d.ts +7 -0
  116. package/dist/lib/hook-context.d.ts.map +1 -0
  117. package/dist/lib/hook-context.js +37 -0
  118. package/dist/lib/hook-context.js.map +1 -0
  119. package/dist/lib/hook-payload.d.ts +7 -0
  120. package/dist/lib/hook-payload.d.ts.map +1 -1
  121. package/dist/lib/hook-payload.js +56 -8
  122. package/dist/lib/hook-payload.js.map +1 -1
  123. package/dist/lib/invite-prompt.d.ts +46 -0
  124. package/dist/lib/invite-prompt.d.ts.map +1 -0
  125. package/dist/lib/invite-prompt.js +63 -0
  126. package/dist/lib/invite-prompt.js.map +1 -0
  127. package/dist/lib/local-db.d.ts +32 -2
  128. package/dist/lib/local-db.d.ts.map +1 -1
  129. package/dist/lib/local-db.js +80 -5
  130. package/dist/lib/local-db.js.map +1 -1
  131. package/dist/lib/local-embeddings.d.ts +14 -0
  132. package/dist/lib/local-embeddings.d.ts.map +1 -1
  133. package/dist/lib/local-embeddings.js +16 -2
  134. package/dist/lib/local-embeddings.js.map +1 -1
  135. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  136. package/dist/lib/local-gateway-client.js +23 -3
  137. package/dist/lib/local-gateway-client.js.map +1 -1
  138. package/dist/lib/local-llm.d.ts +60 -5
  139. package/dist/lib/local-llm.d.ts.map +1 -1
  140. package/dist/lib/local-llm.js +92 -10
  141. package/dist/lib/local-llm.js.map +1 -1
  142. package/dist/lib/mcp-instructions.shared.d.ts +40 -0
  143. package/dist/lib/mcp-instructions.shared.d.ts.map +1 -0
  144. package/dist/lib/mcp-instructions.shared.js +56 -0
  145. package/dist/lib/mcp-instructions.shared.js.map +1 -0
  146. package/dist/lib/mcp-setup.d.ts +32 -2
  147. package/dist/lib/mcp-setup.d.ts.map +1 -1
  148. package/dist/lib/mcp-setup.js +92 -6
  149. package/dist/lib/mcp-setup.js.map +1 -1
  150. package/dist/lib/next-step.d.ts +92 -0
  151. package/dist/lib/next-step.d.ts.map +1 -0
  152. package/dist/lib/next-step.js +97 -0
  153. package/dist/lib/next-step.js.map +1 -0
  154. package/dist/lib/personal-email-domains.d.ts +8 -0
  155. package/dist/lib/personal-email-domains.d.ts.map +1 -0
  156. package/dist/lib/personal-email-domains.js +39 -0
  157. package/dist/lib/personal-email-domains.js.map +1 -0
  158. package/dist/lib/personal-import.d.ts +2 -0
  159. package/dist/lib/personal-import.d.ts.map +1 -1
  160. package/dist/lib/personal-import.js +4 -1
  161. package/dist/lib/personal-import.js.map +1 -1
  162. package/dist/lib/read-value-rollup.d.ts +18 -0
  163. package/dist/lib/read-value-rollup.d.ts.map +1 -0
  164. package/dist/lib/read-value-rollup.js +33 -0
  165. package/dist/lib/read-value-rollup.js.map +1 -0
  166. package/dist/lib/sessions/import-summary.d.ts +39 -0
  167. package/dist/lib/sessions/import-summary.d.ts.map +1 -0
  168. package/dist/lib/sessions/import-summary.js +41 -0
  169. package/dist/lib/sessions/import-summary.js.map +1 -0
  170. package/dist/lib/sessions/memory-files.d.ts +85 -0
  171. package/dist/lib/sessions/memory-files.d.ts.map +1 -0
  172. package/dist/lib/sessions/memory-files.js +235 -0
  173. package/dist/lib/sessions/memory-files.js.map +1 -0
  174. package/dist/lib/sessions/source-url.d.ts +11 -0
  175. package/dist/lib/sessions/source-url.d.ts.map +1 -1
  176. package/dist/lib/sessions/source-url.js +15 -0
  177. package/dist/lib/sessions/source-url.js.map +1 -1
  178. package/dist/lib/setup-funnel.d.ts +41 -0
  179. package/dist/lib/setup-funnel.d.ts.map +1 -0
  180. package/dist/lib/setup-funnel.js +28 -0
  181. package/dist/lib/setup-funnel.js.map +1 -0
  182. package/dist/lib/telemetry-consent.d.ts +17 -8
  183. package/dist/lib/telemetry-consent.d.ts.map +1 -1
  184. package/dist/lib/telemetry-consent.js +21 -6
  185. package/dist/lib/telemetry-consent.js.map +1 -1
  186. package/dist/lib/telemetry-env.d.ts +19 -0
  187. package/dist/lib/telemetry-env.d.ts.map +1 -0
  188. package/dist/lib/telemetry-env.js +13 -0
  189. package/dist/lib/telemetry-env.js.map +1 -0
  190. package/dist/lib/usage-telemetry.d.ts +108 -13
  191. package/dist/lib/usage-telemetry.d.ts.map +1 -1
  192. package/dist/lib/usage-telemetry.js +227 -55
  193. package/dist/lib/usage-telemetry.js.map +1 -1
  194. package/dist/lib/user-hooks.d.ts +15 -0
  195. package/dist/lib/user-hooks.d.ts.map +1 -0
  196. package/dist/lib/user-hooks.js +144 -0
  197. package/dist/lib/user-hooks.js.map +1 -0
  198. package/dist/lib/value-rollup.d.ts +10 -3
  199. package/dist/lib/value-rollup.d.ts.map +1 -1
  200. package/dist/lib/value-rollup.js +11 -4
  201. package/dist/lib/value-rollup.js.map +1 -1
  202. package/package.json +2 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The agent detected in this repo's project config leads: it is the one the user is most
3
+ * likely sitting in, since the wizard ran from this repo. Then the rest, deduplicated - Claude
4
+ * Code reads both its global ~/.claude.json and the project .mcp.json, and is one agent.
5
+ */
6
+ export function orderAgents(w) {
7
+ const seen = new Set();
8
+ const out = [];
9
+ for (const name of [...w.project, ...w.global]) {
10
+ if (seen.has(name))
11
+ continue;
12
+ seen.add(name);
13
+ out.push(name);
14
+ }
15
+ return out;
16
+ }
17
+ /**
18
+ * Which agents setupAgentAlignment's write reached, from the file list it returns. Only
19
+ * `.mcp.json` wires an agent's MCP client (the rest are hooks and nudges); Claude Code is the
20
+ * agent that reads it as a project config. pi reads it too, through pi-mcp-adapter, but only
21
+ * when installed, and the outro must not name an agent that may not exist on the machine.
22
+ */
23
+ export function projectAgentsFromWritten(written) {
24
+ return written.includes('.mcp.json') ? ['Claude Code'] : [];
25
+ }
26
+ /** Prints only when something was actually wired: a connection claim with nothing behind it is worse than silence. */
27
+ export function agentConnectedLine(agents) {
28
+ if (agents.length === 0)
29
+ return undefined;
30
+ return `Your agent is connected: ${agents.join(', ')}.`;
31
+ }
32
+ /**
33
+ * The question to hand the agent. Against a REAL decision the wizard found when there is one,
34
+ * because "why did we X" is checkable against the repo the user is sitting in. The fallback
35
+ * is ABOUT the graph rather than in it, which is a bad thing to type into `align ask` (ALI-771:
36
+ * on-device search matches nothing) and a fine thing to ask an agent, which answers it with a
37
+ * list tool rather than a similarity search.
38
+ */
39
+ export function firstQuestion(firstTitle) {
40
+ return firstTitle ? `why did we ${firstTitle}?` : 'what decisions exist in this codebase?';
41
+ }
42
+ /** Runnable AS PRINTED: bare `align mcp --setup` wires the cloud default, which is not a local user's graph. */
43
+ function mcpSetupCommand(envName) {
44
+ return envName === 'prod' ? 'align mcp --setup' : `align mcp --setup --env ${envName}`;
45
+ }
46
+ /**
47
+ * The one next action, and it happens in the agent. `inRepo` is the outro (the wizard just
48
+ * ran here, and the project config only applies here); the card drops it.
49
+ *
50
+ * With no agent detected the line says so and names `align mcp` ONCE - the only CLI verb it
51
+ * may carry, and the ask is still what follows it.
52
+ */
53
+ export function agentAskLine(opts) {
54
+ const question = firstQuestion(opts.firstTitle);
55
+ const first = opts.agents[0];
56
+ if (!first) {
57
+ return `No agent detected. Run ${mcpSetupCommand(opts.envName)}, then ask it: ${question}`;
58
+ }
59
+ return `Open ${first}${opts.inRepo ? ' in this repo' : ''} and ask: ${question}`;
60
+ }
61
+ /** Labels are padded to one column so the card reads as a table. */
62
+ const LABEL_WIDTH = 13;
63
+ export function cardLabel(label) {
64
+ return label.padEnd(LABEL_WIDTH);
65
+ }
66
+ function valueLine(v) {
67
+ if (v.mode === 'cloud') {
68
+ const reuse = v.reuseRate === null ? 'n/a' : `${Math.round(v.reuseRate * 100)}%`;
69
+ return `${cardLabel('This week')}${v.conflictsCaught} conflicts caught, reuse rate ${reuse}`;
70
+ }
71
+ const conflicts = v.conflictsCaught > 0 ? `, ${v.conflictsCaught} conflicts caught` : '';
72
+ return `${cardLabel('So far')}${v.decisions} decisions in your graph${conflicts}`;
73
+ }
74
+ /**
75
+ * The card bare `align` prints once set up. Graph, agents by name, the readout, and exactly
76
+ * ONE next action. No CLI verb, with one exception: an empty graph's action is
77
+ * `align connect`, because nothing in the agent can fill a graph yet.
78
+ */
79
+ export function renderSecondRunCard(card) {
80
+ const lines = [
81
+ ` ${card.graphLine}`,
82
+ ` ${cardLabel('Agents')}${card.agents.length ? card.agents.join(', ') : 'none detected'}`,
83
+ ];
84
+ if (card.value)
85
+ lines.push(` ${valueLine(card.value)}`);
86
+ lines.push('');
87
+ if (!card.hasDecisions) {
88
+ // ALI-951: the one verb, and it is the picker - git needs no token and is the first row.
89
+ lines.push(' Your graph is empty. Fill it:');
90
+ lines.push(' align connect');
91
+ }
92
+ else {
93
+ lines.push(` ${agentAskLine({ agents: card.agents, firstTitle: card.firstTitle, inRepo: false, envName: card.envName })}`);
94
+ }
95
+ return lines.join('\n');
96
+ }
97
+ //# sourceMappingURL=next-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../src/lib/next-step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Whether an email's domain is a personal-account provider rather than a company's own
3
+ * domain. Malformed input (no `@`, an empty domain) answers false rather than throwing -
4
+ * this is a messaging hint, never a validator, so an unparseable address should not crash
5
+ * the command that is about to reject it for other reasons anyway.
6
+ */
7
+ export declare function isPersonalEmailDomain(email: string): boolean;
8
+ //# sourceMappingURL=personal-email-domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personal-email-domains.d.ts","sourceRoot":"","sources":["../../src/lib/personal-email-domains.ts"],"names":[],"mappings":"AA0BA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAK5D"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ALI-938: which email domains are individual accounts rather than a company's.
3
+ *
4
+ * `align invite` needs to know whether the CALLER's own tenant is a work-domain org
5
+ * (has room for a team) or a personal, single-person tenant (nothing to invite anyone
6
+ * into) - the same distinction align-stack's gateway makes at signup
7
+ * (`services/gateway/src/billing/provisioning.ts`, `PERSONAL_EMAIL_DOMAINS` /
8
+ * `isPersonalEmailDomain`). This is a client-side mirror of that list for UX purposes
9
+ * only - `align invite`'s messaging reads better when it can say so up front, but the
10
+ * gateway is the actual authority on tenant type (it is the one that decided at signup).
11
+ * Keep the two lists in sync by hand; there is no shared package between the two repos
12
+ * for a list this short.
13
+ */
14
+ const PERSONAL_EMAIL_DOMAINS = new Set([
15
+ 'gmail.com', 'googlemail.com',
16
+ 'yahoo.com', 'yahoo.co.uk', 'yahoo.fr', 'yahoo.de', 'yahoo.es', 'yahoo.it',
17
+ 'hotmail.com', 'hotmail.co.uk', 'hotmail.fr', 'hotmail.de', 'hotmail.es',
18
+ 'outlook.com', 'live.com', 'msn.com',
19
+ 'aol.com',
20
+ 'icloud.com', 'me.com', 'mac.com',
21
+ 'protonmail.com', 'protonmail.ch', 'proton.me',
22
+ 'fastmail.com', 'fastmail.fm',
23
+ 'hey.com',
24
+ 'zoho.com',
25
+ ]);
26
+ /**
27
+ * Whether an email's domain is a personal-account provider rather than a company's own
28
+ * domain. Malformed input (no `@`, an empty domain) answers false rather than throwing -
29
+ * this is a messaging hint, never a validator, so an unparseable address should not crash
30
+ * the command that is about to reject it for other reasons anyway.
31
+ */
32
+ export function isPersonalEmailDomain(email) {
33
+ const at = email.lastIndexOf('@');
34
+ if (at === -1 || at === email.length - 1)
35
+ return false;
36
+ const domain = email.slice(at + 1).toLowerCase();
37
+ return PERSONAL_EMAIL_DOMAINS.has(domain);
38
+ }
39
+ //# sourceMappingURL=personal-email-domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personal-email-domains.js","sourceRoot":"","sources":["../../src/lib/personal-email-domains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC1E,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IACxE,aAAa,EAAE,UAAU,EAAE,SAAS;IACpC,SAAS;IACT,YAAY,EAAE,QAAQ,EAAE,SAAS;IACjC,gBAAgB,EAAE,eAAe,EAAE,WAAW;IAC9C,cAAc,EAAE,aAAa;IAC7B,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -9,6 +9,8 @@ export declare function runPersonalImport(items: PersonalImportItem[], client: R
9
9
  quiet?: boolean;
10
10
  deferEnrichment?: boolean;
11
11
  local?: boolean;
12
+ /** ALI-951 (`align connect --json`): with quiet, print nothing at all - the caller owns stdout. */
13
+ silent?: boolean;
12
14
  /** ALI-795: when present, emit the import_completed funnel stage after ingest.
13
15
  * Carries the env because the consent decision needs it; source is the connector
14
16
  * id ('git', 'jira'), which becomes the stage's provenance command. */
@@ -1 +1 @@
1
- {"version":3,"file":"personal-import.d.ts","sourceRoot":"","sources":["../../src/lib/personal-import.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAoDjD,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,KAAK,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAYpC;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC9C,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAC9G;;4EAEwE;IACxE,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,GACA,OAAO,CAAC,MAAM,CAAC,CAmIjB;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;6DACyD;IACzD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAClE,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiC5B"}
1
+ {"version":3,"file":"personal-import.d.ts","sourceRoot":"","sources":["../../src/lib/personal-import.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAoDjD,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,KAAK,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAYpC;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC9C,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAC9G,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;4EAEwE;IACxE,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,GACA,OAAO,CAAC,MAAM,CAAC,CAoIjB;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;6DACyD;IACzD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAClE,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiC5B"}
@@ -70,7 +70,8 @@ export async function runWithConcurrency(tasks, concurrency) {
70
70
  }
71
71
  export async function runPersonalImport(items, client, opts) {
72
72
  if (!items.length) {
73
- p.log.warn(`No items found from ${opts.label}.`);
73
+ if (!opts.silent)
74
+ p.log.warn(`No items found from ${opts.label}.`);
74
75
  return 0;
75
76
  }
76
77
  // Quiet mode (concurrent setup imports): skip the preview table, the animated
@@ -152,6 +153,8 @@ export async function runPersonalImport(items, client, opts) {
152
153
  // Quiet mode: one compact completion line; the shared footer is printed once
153
154
  // by the caller after all concurrent imports finish.
154
155
  if (opts.quiet) {
156
+ if (opts.silent)
157
+ return total;
155
158
  const conn = relatedCount > 0 ? `, ${relatedCount} connection${relatedCount === 1 ? '' : 's'}` : '';
156
159
  const failNote = failures.length
157
160
  ? chalk.yellow(` (${failures.length} batch${failures.length > 1 ? 'es' : ''} failed)`)
@@ -1 +1 @@
1
- {"version":3,"file":"personal-import.js","sourceRoot":"","sources":["../../src/lib/personal-import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personal-import.js","sourceRoot":"","sources":["../../src/lib/personal-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { createConfigStore, EnvName } from './config.js';
2
+ import { type ValueRollup } from './value-rollup.js';
3
+ /**
4
+ * The ALI-215 "what your graph did for you" rollup for an environment, from wherever that
5
+ * environment keeps it: the local SQLite graph for local-embedded, the gateway otherwise.
6
+ * Moved out of status.ts (ALI-950) so the second-run card reads the SAME readout `align
7
+ * status` prints, rather than a second copy of the query that can drift from it.
8
+ *
9
+ * `days` is the window the gateway's impact and reuse-rate endpoints are read over; the
10
+ * local graph has no window (its link counts are all-time) and ignores it.
11
+ */
12
+ export declare function readValueRollup(config: ReturnType<typeof createConfigStore>, envName: EnvName, opts?: {
13
+ days?: number;
14
+ }): Promise<{
15
+ mode: 'cloud' | 'local';
16
+ rollup: ValueRollup;
17
+ }>;
18
+ //# sourceMappingURL=read-value-rollup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/read-value-rollup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAsC,KAAK,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AAEjH;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EAC5C,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAiB3D"}
@@ -0,0 +1,33 @@
1
+ import { createGatewayClient } from './gateway-client.js';
2
+ import { createLocalDb } from './local-db.js';
3
+ import { getLocalDbPath } from './local-mode.js';
4
+ import { fetchValueRollup, localValueRollup } from './value-rollup.js';
5
+ /**
6
+ * The ALI-215 "what your graph did for you" rollup for an environment, from wherever that
7
+ * environment keeps it: the local SQLite graph for local-embedded, the gateway otherwise.
8
+ * Moved out of status.ts (ALI-950) so the second-run card reads the SAME readout `align
9
+ * status` prints, rather than a second copy of the query that can drift from it.
10
+ *
11
+ * `days` is the window the gateway's impact and reuse-rate endpoints are read over; the
12
+ * local graph has no window (its link counts are all-time) and ignores it.
13
+ */
14
+ export async function readValueRollup(config, envName, opts = {}) {
15
+ const env = config.getEnvironment(envName);
16
+ if (env.mode === 'local-embedded') {
17
+ // Same readout `align local status` gives: the honest offline subset. Reuse rate and
18
+ // health need the cloud graph, and renderValueReadout's local mode says so.
19
+ const db = createLocalDb(env.localDbPath ?? getLocalDbPath());
20
+ try {
21
+ // ALI-796: a connector counts as connected once local mode holds a saved token for
22
+ // it - the same check `align local forget` uses to tell "removed" from "nothing saved".
23
+ const isConnected = (id) => config.getConnectorFields(envName, id) !== null;
24
+ return { mode: 'local', rollup: localValueRollup(db, isConnected) };
25
+ }
26
+ finally {
27
+ db.close();
28
+ }
29
+ }
30
+ const client = createGatewayClient(env);
31
+ return { mode: 'cloud', rollup: await fetchValueRollup(client, opts) };
32
+ }
33
+ //# sourceMappingURL=read-value-rollup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-value-rollup.js","sourceRoot":"","sources":["../../src/lib/read-value-rollup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAA4C,MAAM,mBAAmB,CAAC;AAEjH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA4C,EAC5C,OAAgB,EAChB,OAA0B,EAAE;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAClC,qFAAqF;QACrF,4EAA4E;QAC5E,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,mFAAmF;YACnF,wFAAwF;YACxF,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC;YACpF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC;QACtE,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC,MAAsC,EAAE,IAAI,CAAC,EAAE,CAAC;AACzG,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ALI-835: the line a human reads at the end of `align import sessions`, and the counts the
3
+ * funnel reports.
4
+ *
5
+ * The line is the product moment; the ping is the measurement. They are built from ONE object
6
+ * here so the two can never disagree - a summary saying 41 beside a ping saying 40 would make
7
+ * both unusable, and nothing downstream could tell which was wrong.
8
+ *
9
+ * The demo beat this exists for (Madhuri, 2026-08-25): run the import on the prospect's own
10
+ * repo, read the line aloud, ask who in the room knew.
11
+ */
12
+ export interface SessionImportCounts {
13
+ /** Session files read, across every detected agent. */
14
+ sessionsScanned: number;
15
+ /** Decision-shaped moments found, before review. */
16
+ candidatesFound: number;
17
+ /** How many of those a human confirmed into the graph this run. */
18
+ candidatesConfirmed: number;
19
+ /**
20
+ * How many of the confirmed claims already carry a human ratification.
21
+ *
22
+ * Structurally 0 at import: `align import sessions` writes claims, and ratifying is a
23
+ * separate human act (`align ratify`). It is reported anyway, because "0 have been ratified"
24
+ * is the sentence the demo turns on - the point is that nobody has stood behind any of them
25
+ * yet. The funnel's own decisions_ratified stage is emitted from `align ratify`, where the
26
+ * number actually moves, rather than from here where it could only ever be zero.
27
+ */
28
+ ratified: number;
29
+ }
30
+ /**
31
+ * The summary line.
32
+ *
33
+ * Renders honestly at zero rather than crashing or printing a line about nothing: "Found 0
34
+ * decisions in 3 sessions" is a different sentence from "Found 0 decisions across 0 sessions",
35
+ * and both are different from an exception. Singular and plural are handled for every count,
36
+ * because "1 sessions" in a demo is the kind of detail that costs more attention than it saves.
37
+ */
38
+ export declare function renderImportSummary(counts: SessionImportCounts): string;
39
+ //# sourceMappingURL=import-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-summary.d.ts","sourceRoot":"","sources":["../../../src/lib/sessions/import-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAyBvE"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ALI-835: the line a human reads at the end of `align import sessions`, and the counts the
3
+ * funnel reports.
4
+ *
5
+ * The line is the product moment; the ping is the measurement. They are built from ONE object
6
+ * here so the two can never disagree - a summary saying 41 beside a ping saying 40 would make
7
+ * both unusable, and nothing downstream could tell which was wrong.
8
+ *
9
+ * The demo beat this exists for (Madhuri, 2026-08-25): run the import on the prospect's own
10
+ * repo, read the line aloud, ask who in the room knew.
11
+ */
12
+ /**
13
+ * The summary line.
14
+ *
15
+ * Renders honestly at zero rather than crashing or printing a line about nothing: "Found 0
16
+ * decisions in 3 sessions" is a different sentence from "Found 0 decisions across 0 sessions",
17
+ * and both are different from an exception. Singular and plural are handled for every count,
18
+ * because "1 sessions" in a demo is the kind of detail that costs more attention than it saves.
19
+ */
20
+ export function renderImportSummary(counts) {
21
+ const { sessionsScanned, candidatesFound, candidatesConfirmed, ratified } = counts;
22
+ const sessions = `${sessionsScanned} session${sessionsScanned === 1 ? '' : 's'}`;
23
+ if (candidatesFound === 0) {
24
+ // The ticket's own wording for the empty case. A run that found nothing is a real result,
25
+ // not a failure, and it must not read like one.
26
+ return `Found 0 decisions in ${sessions}.`;
27
+ }
28
+ const decisions = `${candidatesFound} decision${candidatesFound === 1 ? '' : 's'}`;
29
+ const parts = [`Found ${decisions} across ${sessions}.`];
30
+ // Every candidate here came from an agent's own session, so "made by an agent" is the whole
31
+ // found set by construction rather than a second measurement. Stated as its own sentence
32
+ // because it is the one a prospect reacts to.
33
+ parts.push(`${candidatesFound} ${candidatesFound === 1 ? 'was' : 'were'} made by an agent.`);
34
+ parts.push(`${ratified} ${ratified === 1 ? 'has' : 'have'} been ratified.`);
35
+ if (candidatesConfirmed !== candidatesFound) {
36
+ // Only when it differs, so the common "reviewed them all" run keeps a short line.
37
+ parts.push(`${candidatesConfirmed} confirmed this run.`);
38
+ }
39
+ return parts.join(' ');
40
+ }
41
+ //# sourceMappingURL=import-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-summary.js","sourceRoot":"","sources":["../../../src/lib/sessions/import-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnF,MAAM,QAAQ,GAAG,GAAG,eAAe,WAAW,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAEjF,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,0FAA0F;QAC1F,gDAAgD;QAChD,OAAO,wBAAwB,QAAQ,GAAG,CAAC;IAC7C,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,eAAe,YAAY,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,MAAM,KAAK,GAAG,CAAC,SAAS,SAAS,WAAW,QAAQ,GAAG,CAAC,CAAC;IAEzD,4FAA4F;IAC5F,yFAAyF;IACzF,8CAA8C;IAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,IAAI,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAE5E,IAAI,mBAAmB,KAAK,eAAe,EAAE,CAAC;QAC5C,kFAAkF;QAClF,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,sBAAsB,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,85 @@
1
+ /** The four kinds Claude Code records, verbatim from the documentation. */
2
+ export declare const MEMORY_TYPES: readonly ["user", "feedback", "project", "reference"];
3
+ export type MemoryType = (typeof MEMORY_TYPES)[number];
4
+ /**
5
+ * The two kinds that are decision-shaped.
6
+ *
7
+ * `project` is "ongoing work, deadlines, and decisions that Claude can't derive from the code
8
+ * or git history" and `feedback` is "corrections you give Claude and approaches you confirm" -
9
+ * both are things somebody decided. `user` is a person's role and working preferences, and
10
+ * `reference` is where to find a dashboard. Neither is a decision, and importing them would
11
+ * put personal notes into a decision graph.
12
+ */
13
+ export declare const DECISION_MEMORY_TYPES: readonly MemoryType[];
14
+ /** The index file, never a memory in its own right. */
15
+ export declare const MEMORY_INDEX_FILENAME = "MEMORY.md";
16
+ export interface MemoryFile {
17
+ filePath: string;
18
+ /** Null when the file carries no frontmatter, or carries frontmatter with no `type`, or a
19
+ * `type` outside the four documented values. All three are "cannot classify", which is a
20
+ * different fact from "classified as something we skip" - see extractMemoryDecisions. */
21
+ type: MemoryType | null;
22
+ /** ISO-8601 from the `modified` field, or null when absent (the field only appears on files
23
+ * Claude has written since v2.1.214, and never on a file that has no frontmatter). */
24
+ modified: string | null;
25
+ /** Every other scalar frontmatter key, unparsed. Nothing depends on these; they exist so a
26
+ * later ticket can confirm `description`/`originSessionId` from real data without a reparse. */
27
+ extra: Record<string, string>;
28
+ /** The markdown below the frontmatter, trimmed. */
29
+ body: string;
30
+ }
31
+ export interface MemoryDecisionCandidate {
32
+ filePath: string;
33
+ type: MemoryType;
34
+ /** The file's first markdown heading, else its filename stem with separators as spaces. */
35
+ title: string;
36
+ body: string;
37
+ /** ISO-8601 or null, from `modified`. */
38
+ timestamp: string | null;
39
+ /** The memory directory this file came from, used to build a stable source_url. */
40
+ memoryDir: string;
41
+ }
42
+ /**
43
+ * Where this project's memory directory is, if anywhere.
44
+ *
45
+ * Resolution order, and the reason for it:
46
+ *
47
+ * 1. `autoMemoryDirectory` from `~/.claude/settings.json`. Reading it matters because the
48
+ * failure direction without it is silent: a user who relocated the directory would get an
49
+ * empty list, which is indistinguishable from "no memories yet".
50
+ * 2. Otherwise, the `memory/` sibling of this project's Claude Code session files. The docs
51
+ * say `<project>` is derived from the git repository, and the exact slug encoding is not
52
+ * documented - so rather than guess at it, this reuses the cwd matching ALI-808 already
53
+ * proved (each session file records its own `cwd`) and takes the directory those files
54
+ * sit in. That is correct for worktrees and subdirectories for free, because they share
55
+ * one project directory.
56
+ *
57
+ * Returns [] when the agent has never run here, which is the normal case and not an error.
58
+ */
59
+ export declare function locateMemoryDirs(cwd: string): string[];
60
+ /** Memory topic files for this project, newest first. `MEMORY.md` is excluded: it is an index
61
+ * of the others, so importing it would duplicate every memory as one more candidate. */
62
+ export declare function locateMemoryFiles(cwd: string): string[];
63
+ /**
64
+ * Parses one memory file.
65
+ *
66
+ * The frontmatter reader deliberately handles only `key: value` scalars on one line, which is
67
+ * every field the documentation describes. Anything else - a nested map, a list, a block
68
+ * scalar - is left in `extra` as its raw text if it is a simple scalar and otherwise ignored,
69
+ * rather than half-understood. js-yaml is a devDependency here, not a runtime one, so pulling
70
+ * a YAML parser into shipped CLI code would be a new dependency for two scalar fields.
71
+ *
72
+ * Returns null only for an unreadable file.
73
+ */
74
+ export declare function parseMemoryFile(filePath: string): MemoryFile | null;
75
+ /**
76
+ * The decision-shaped memories among these files.
77
+ *
78
+ * Three separate reasons a file is dropped, all deliberate:
79
+ * - `type` is `user` or `reference`: classified, and not a decision.
80
+ * - `type` is absent or unrecognised: NOT classified. Importing it would be a guess about
81
+ * personal notes, so it is skipped rather than defaulted into a decision.
82
+ * - the body is empty: nothing to review.
83
+ */
84
+ export declare function extractMemoryDecisions(filePaths: string[]): MemoryDecisionCandidate[];
85
+ //# sourceMappingURL=memory-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-files.d.ts","sourceRoot":"","sources":["../../../src/lib/sessions/memory-files.ts"],"names":[],"mappings":"AA4CA,2EAA2E;AAC3E,eAAO,MAAM,YAAY,uDAAwD,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,UAAU,EAA4B,CAAC;AAEpF,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB;;8FAE0F;IAC1F,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB;2FACuF;IACvF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;qGACiG;IACjG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQtD;AAED;yFACyF;AACzF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQvD;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAmBnE;AAiDD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAyBrF"}