helixmind 0.7.2 → 0.8.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 (74) hide show
  1. package/README.md +34 -3
  2. package/dist/cli/agent/loop.d.ts.map +1 -1
  3. package/dist/cli/agent/loop.js +8 -4
  4. package/dist/cli/agent/loop.js.map +1 -1
  5. package/dist/cli/agent/permissions.d.ts +8 -2
  6. package/dist/cli/agent/permissions.d.ts.map +1 -1
  7. package/dist/cli/agent/permissions.js +19 -8
  8. package/dist/cli/agent/permissions.js.map +1 -1
  9. package/dist/cli/agent/tools/bug-list.js +8 -1
  10. package/dist/cli/agent/tools/bug-list.js.map +1 -1
  11. package/dist/cli/agent/tools/git-commit.js +12 -13
  12. package/dist/cli/agent/tools/git-commit.js.map +1 -1
  13. package/dist/cli/agent/tools/git-diff.js +3 -4
  14. package/dist/cli/agent/tools/git-diff.js.map +1 -1
  15. package/dist/cli/agent/tools/git-exec.d.ts +36 -0
  16. package/dist/cli/agent/tools/git-exec.d.ts.map +1 -0
  17. package/dist/cli/agent/tools/git-exec.js +56 -0
  18. package/dist/cli/agent/tools/git-exec.js.map +1 -0
  19. package/dist/cli/agent/tools/git-log.js +4 -5
  20. package/dist/cli/agent/tools/git-log.js.map +1 -1
  21. package/dist/cli/agent/tools/git-status.js +6 -6
  22. package/dist/cli/agent/tools/git-status.js.map +1 -1
  23. package/dist/cli/agent/tools/registry.d.ts +9 -0
  24. package/dist/cli/agent/tools/registry.d.ts.map +1 -1
  25. package/dist/cli/agent/tools/registry.js.map +1 -1
  26. package/dist/cli/agent/tools/run-command.js +22 -0
  27. package/dist/cli/agent/tools/run-command.js.map +1 -1
  28. package/dist/cli/agent/tools/web-research.js +7 -3
  29. package/dist/cli/agent/tools/web-research.js.map +1 -1
  30. package/dist/cli/bugs/journal.d.ts +11 -0
  31. package/dist/cli/bugs/journal.d.ts.map +1 -1
  32. package/dist/cli/bugs/journal.js +67 -2
  33. package/dist/cli/bugs/journal.js.map +1 -1
  34. package/dist/cli/bugs/types.d.ts +2 -0
  35. package/dist/cli/bugs/types.d.ts.map +1 -1
  36. package/dist/cli/commands/chat.d.ts.map +1 -1
  37. package/dist/cli/commands/chat.js +167 -16
  38. package/dist/cli/commands/chat.js.map +1 -1
  39. package/dist/cli/core/stdin-envelope.d.ts +41 -0
  40. package/dist/cli/core/stdin-envelope.d.ts.map +1 -0
  41. package/dist/cli/core/stdin-envelope.js +107 -0
  42. package/dist/cli/core/stdin-envelope.js.map +1 -0
  43. package/dist/cli/jarvis/notifications.js +1 -1
  44. package/dist/cli/jarvis/telemetry.js +1 -1
  45. package/dist/cli/jarvis/types.d.ts +2 -2
  46. package/dist/cli/jarvis/types.d.ts.map +1 -1
  47. package/dist/cli/jarvis/types.js.map +1 -1
  48. package/dist/cli/license/checker.js +1 -1
  49. package/dist/cli/ui/select-menu.d.ts +12 -0
  50. package/dist/cli/ui/select-menu.d.ts.map +1 -1
  51. package/dist/cli/ui/select-menu.js +47 -27
  52. package/dist/cli/ui/select-menu.js.map +1 -1
  53. package/dist/cli/validation/static-checks.d.ts.map +1 -1
  54. package/dist/cli/validation/static-checks.js +62 -3
  55. package/dist/cli/validation/static-checks.js.map +1 -1
  56. package/dist/cli/validation/stats.d.ts.map +1 -1
  57. package/dist/cli/validation/stats.js +5 -3
  58. package/dist/cli/validation/stats.js.map +1 -1
  59. package/dist/spiral/cloud/search-provider.d.ts.map +1 -1
  60. package/dist/spiral/cloud/search-provider.js +29 -1
  61. package/dist/spiral/cloud/search-provider.js.map +1 -1
  62. package/dist/spiral/engine.d.ts +13 -0
  63. package/dist/spiral/engine.d.ts.map +1 -1
  64. package/dist/spiral/engine.js +35 -0
  65. package/dist/spiral/engine.js.map +1 -1
  66. package/dist/spiral/injection.d.ts +13 -0
  67. package/dist/spiral/injection.d.ts.map +1 -1
  68. package/dist/spiral/injection.js +66 -1
  69. package/dist/spiral/injection.js.map +1 -1
  70. package/dist/spiral/provenance.d.ts +37 -0
  71. package/dist/spiral/provenance.d.ts.map +1 -0
  72. package/dist/spiral/provenance.js +167 -0
  73. package/dist/spiral/provenance.js.map +1 -0
  74. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"injection.js","sourceRoot":"","sources":["../../src/spiral/injection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injection.js","sourceRoot":"","sources":["../../src/spiral/injection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface NodeProvenance {
2
+ file_path: string;
3
+ file_hash: string;
4
+ file_mtime: number;
5
+ git_sha?: string;
6
+ captured_at: number;
7
+ verified_at: number;
8
+ }
9
+ /**
10
+ * Compute provenance for a node about to be stored. Returns null if no
11
+ * file reference can be tied to the node — caller stores the node without
12
+ * provenance and it's exempt from staleness checks.
13
+ *
14
+ * Looks at metadata.file first (explicit). Future: also detect path-shaped
15
+ * tokens in `content` for nodes that don't carry an explicit file field.
16
+ */
17
+ export declare function computeProvenance(metadata: Record<string, unknown> | undefined, projectRoot: string): NodeProvenance | null;
18
+ /**
19
+ * Check whether a node's provenance still matches the on-disk file.
20
+ * Returns 'fresh' (no change), 'stale' (file content differs), or
21
+ * 'unknown' (no provenance recorded, or the file is gone/unreadable).
22
+ *
23
+ * 'fresh' results bump verified_at on the caller's side so we can later
24
+ * surface "last verified 3 minutes ago" in the brain UI.
25
+ */
26
+ export type StalenessStatus = 'fresh' | 'stale' | 'unknown';
27
+ export declare function checkStaleness(provenance: NodeProvenance | undefined, projectRoot: string): {
28
+ status: StalenessStatus;
29
+ current_hash?: string;
30
+ current_mtime?: number;
31
+ };
32
+ /**
33
+ * Type-narrowing helper for use inside the injection layer where the
34
+ * metadata is known to be a parsed JSON object.
35
+ */
36
+ export declare function readProvenance(metadata: Record<string, unknown> | undefined): NodeProvenance | undefined;
37
+ //# sourceMappingURL=provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/spiral/provenance.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,IAAI,CAmBvB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,wBAAgB,cAAc,CAC5B,UAAU,EAAE,cAAc,GAAG,SAAS,EACtC,WAAW,EAAE,MAAM,GAClB;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CA4B5E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAMxG"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * audit-014 / v0.8.0 "Compounds": Provenance for spiral memory nodes.
3
+ *
4
+ * The problem this solves:
5
+ * Without provenance, a node stored in session A — e.g. "the auth bug is
6
+ * in middleware/jwt.ts:42" — is recalled verbatim in session B, even if
7
+ * foo.ts has been rewritten in between. The agent treats stale diagnoses
8
+ * as ground truth, leading to the "4 sessions on one bug" failure mode
9
+ * the user has hit repeatedly.
10
+ *
11
+ * What provenance is:
12
+ * For nodes that reference a file (metadata.file is set, or we detect
13
+ * path-shaped strings inside the content), we record:
14
+ * - file_path: the path the node references (resolved to
15
+ * project-relative for portability)
16
+ * - file_hash: SHA-256 of the file contents at capture time
17
+ * - file_mtime: file system mtime at capture time
18
+ * - git_sha: short HEAD sha at capture time (best-effort)
19
+ * - captured_at: ms epoch
20
+ * - verified_at: ms epoch — when we last confirmed the file
21
+ * still matches file_hash
22
+ *
23
+ * What we do with it:
24
+ * On recall, the injection layer calls isStale() per node. If the file
25
+ * has changed since capture, the node is either dropped from the
26
+ * injected context or marked with a `[STALE]` prefix so the LLM sees
27
+ * "this used to be true, treat as a hint not a fact". Either way the
28
+ * agent re-investigates instead of trusting cached reasoning.
29
+ *
30
+ * Storage:
31
+ * provenance lives in `node.metadata.provenance`. Keeping it in the JSON
32
+ * metadata column avoids a schema migration in v0 — the cost is that we
33
+ * can't filter at the SQL layer, but for typical spiral sizes (≤5k
34
+ * nodes) the JS-side filter is fast enough. Promote to a first-class
35
+ * column when scale demands it.
36
+ */
37
+ import { readFileSync, existsSync, statSync } from 'node:fs';
38
+ import { execFileSync } from 'node:child_process';
39
+ import { createHash } from 'node:crypto';
40
+ import { resolve, isAbsolute, relative } from 'node:path';
41
+ /** Cap for files we'll hash. Anything bigger is a probably-not-source asset. */
42
+ const PROVENANCE_HASH_CAP_BYTES = 5 * 1024 * 1024;
43
+ /** Best-effort git HEAD sha. Cached per project root for the process lifetime. */
44
+ const gitShaCache = new Map();
45
+ function gitHeadSha(projectRoot) {
46
+ if (gitShaCache.has(projectRoot)) {
47
+ return gitShaCache.get(projectRoot) ?? undefined;
48
+ }
49
+ try {
50
+ const out = execFileSync('git', ['rev-parse', '--short', 'HEAD'], {
51
+ cwd: projectRoot,
52
+ encoding: 'utf-8',
53
+ stdio: ['ignore', 'pipe', 'ignore'],
54
+ timeout: 2000,
55
+ }).trim();
56
+ gitShaCache.set(projectRoot, out);
57
+ return out;
58
+ }
59
+ catch {
60
+ gitShaCache.set(projectRoot, null);
61
+ return undefined;
62
+ }
63
+ }
64
+ function hashFile(absPath) {
65
+ try {
66
+ const stat = statSync(absPath);
67
+ if (!stat.isFile())
68
+ return null;
69
+ if (stat.size > PROVENANCE_HASH_CAP_BYTES)
70
+ return null;
71
+ const buf = readFileSync(absPath);
72
+ const hash = createHash('sha256').update(buf).digest('hex');
73
+ return { hash, mtime: stat.mtimeMs };
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ function resolveProjectRelative(filePath, projectRoot) {
80
+ // Store paths as project-relative when possible; absolute paths break
81
+ // when the project moves directories (laptop → workstation, container,
82
+ // worktree). Provenance follows the project, not the workstation.
83
+ const abs = isAbsolute(filePath) ? filePath : resolve(projectRoot, filePath);
84
+ const rel = relative(projectRoot, abs);
85
+ // If the file is outside the project root, keep the absolute path —
86
+ // there's no shorter portable representation.
87
+ if (rel.startsWith('..'))
88
+ return abs;
89
+ // Normalize to forward slashes so Provenance is portable across OSes
90
+ // (Windows session → Linux session via cloud sync). Resolve back to
91
+ // the platform's separator only at file-system boundaries (statSync,
92
+ // readFileSync) using path.resolve, which accepts forward slashes
93
+ // everywhere.
94
+ return rel.split(/\\+/).join('/');
95
+ }
96
+ /**
97
+ * Compute provenance for a node about to be stored. Returns null if no
98
+ * file reference can be tied to the node — caller stores the node without
99
+ * provenance and it's exempt from staleness checks.
100
+ *
101
+ * Looks at metadata.file first (explicit). Future: also detect path-shaped
102
+ * tokens in `content` for nodes that don't carry an explicit file field.
103
+ */
104
+ export function computeProvenance(metadata, projectRoot) {
105
+ const file = metadata?.file;
106
+ if (typeof file !== 'string' || !file)
107
+ return null;
108
+ const abs = isAbsolute(file) ? file : resolve(projectRoot, file);
109
+ if (!existsSync(abs))
110
+ return null;
111
+ const hashed = hashFile(abs);
112
+ if (!hashed)
113
+ return null;
114
+ const now = Date.now();
115
+ return {
116
+ file_path: resolveProjectRelative(file, projectRoot),
117
+ file_hash: hashed.hash,
118
+ file_mtime: hashed.mtime,
119
+ git_sha: gitHeadSha(projectRoot),
120
+ captured_at: now,
121
+ verified_at: now,
122
+ };
123
+ }
124
+ export function checkStaleness(provenance, projectRoot) {
125
+ if (!provenance)
126
+ return { status: 'unknown' };
127
+ const abs = isAbsolute(provenance.file_path)
128
+ ? provenance.file_path
129
+ : resolve(projectRoot, provenance.file_path);
130
+ if (!existsSync(abs))
131
+ return { status: 'stale' }; // file deleted
132
+ // Cheap first-pass: mtime equality. If mtimes match exactly, content
133
+ // almost certainly matches — skip the hash. We re-hash on mtime
134
+ // mismatch to handle "git checkout reset mtime but content is the same"
135
+ // and "atime touch but content unchanged" cases.
136
+ try {
137
+ const stat = statSync(abs);
138
+ if (stat.mtimeMs === provenance.file_mtime) {
139
+ return { status: 'fresh', current_mtime: stat.mtimeMs };
140
+ }
141
+ }
142
+ catch {
143
+ return { status: 'unknown' };
144
+ }
145
+ const hashed = hashFile(abs);
146
+ if (!hashed)
147
+ return { status: 'unknown' };
148
+ return {
149
+ status: hashed.hash === provenance.file_hash ? 'fresh' : 'stale',
150
+ current_hash: hashed.hash,
151
+ current_mtime: hashed.mtime,
152
+ };
153
+ }
154
+ /**
155
+ * Type-narrowing helper for use inside the injection layer where the
156
+ * metadata is known to be a parsed JSON object.
157
+ */
158
+ export function readProvenance(metadata) {
159
+ const p = metadata?.provenance;
160
+ if (!p || typeof p !== 'object')
161
+ return undefined;
162
+ const candidate = p;
163
+ if (typeof candidate.file_path !== 'string' || typeof candidate.file_hash !== 'string')
164
+ return undefined;
165
+ return p;
166
+ }
167
+ //# sourceMappingURL=provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/spiral/provenance.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "helixmind",
3
- "version": "0.7.2",
4
- "description": "HelixMind – AI Coding CLI with Persistent Spiral Memory",
3
+ "version": "0.8.0",
4
+ "description": "HelixMind – AI Coding CLI with Persistent Spiral Memory that Compounds",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {