holistic 0.2.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 (66) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/CONTRIBUTING.md +121 -0
  3. package/LICENSE +21 -0
  4. package/README.md +329 -0
  5. package/bin/holistic +17 -0
  6. package/bin/holistic.cmd +23 -0
  7. package/bin/holistic.js +59 -0
  8. package/dist/__tests__/mcp-notification.test.d.ts +5 -0
  9. package/dist/__tests__/mcp-notification.test.d.ts.map +1 -0
  10. package/dist/__tests__/mcp-notification.test.js +255 -0
  11. package/dist/__tests__/mcp-notification.test.js.map +1 -0
  12. package/dist/cli.d.ts +6 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +637 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/core/docs.d.ts +3 -0
  17. package/dist/core/docs.d.ts.map +1 -0
  18. package/dist/core/docs.js +602 -0
  19. package/dist/core/docs.js.map +1 -0
  20. package/dist/core/git-hooks.d.ts +17 -0
  21. package/dist/core/git-hooks.d.ts.map +1 -0
  22. package/dist/core/git-hooks.js +144 -0
  23. package/dist/core/git-hooks.js.map +1 -0
  24. package/dist/core/git.d.ts +12 -0
  25. package/dist/core/git.d.ts.map +1 -0
  26. package/dist/core/git.js +121 -0
  27. package/dist/core/git.js.map +1 -0
  28. package/dist/core/lock.d.ts +2 -0
  29. package/dist/core/lock.d.ts.map +1 -0
  30. package/dist/core/lock.js +40 -0
  31. package/dist/core/lock.js.map +1 -0
  32. package/dist/core/redact.d.ts +3 -0
  33. package/dist/core/redact.d.ts.map +1 -0
  34. package/dist/core/redact.js +13 -0
  35. package/dist/core/redact.js.map +1 -0
  36. package/dist/core/setup.d.ts +35 -0
  37. package/dist/core/setup.d.ts.map +1 -0
  38. package/dist/core/setup.js +654 -0
  39. package/dist/core/setup.js.map +1 -0
  40. package/dist/core/splash.d.ts +9 -0
  41. package/dist/core/splash.d.ts.map +1 -0
  42. package/dist/core/splash.js +35 -0
  43. package/dist/core/splash.js.map +1 -0
  44. package/dist/core/state.d.ts +42 -0
  45. package/dist/core/state.d.ts.map +1 -0
  46. package/dist/core/state.js +744 -0
  47. package/dist/core/state.js.map +1 -0
  48. package/dist/core/sync.d.ts +12 -0
  49. package/dist/core/sync.d.ts.map +1 -0
  50. package/dist/core/sync.js +106 -0
  51. package/dist/core/sync.js.map +1 -0
  52. package/dist/core/types.d.ts +210 -0
  53. package/dist/core/types.d.ts.map +1 -0
  54. package/dist/core/types.js +2 -0
  55. package/dist/core/types.js.map +1 -0
  56. package/dist/daemon.d.ts +7 -0
  57. package/dist/daemon.d.ts.map +1 -0
  58. package/dist/daemon.js +242 -0
  59. package/dist/daemon.js.map +1 -0
  60. package/dist/mcp-server.d.ts +11 -0
  61. package/dist/mcp-server.d.ts.map +1 -0
  62. package/dist/mcp-server.js +266 -0
  63. package/dist/mcp-server.js.map +1 -0
  64. package/docs/handoff-walkthrough.md +119 -0
  65. package/docs/structured-metadata.md +341 -0
  66. package/package.json +67 -0
@@ -0,0 +1,255 @@
1
+ import assert from "node:assert";
2
+ import { buildStartupGreeting } from '../core/state.js';
3
+ function makeTestState(overrides) {
4
+ return {
5
+ version: 2,
6
+ projectName: "test-project",
7
+ createdAt: "2026-03-21T12:00:00.000Z",
8
+ updatedAt: "2026-03-21T12:00:00.000Z",
9
+ activeSession: null,
10
+ pendingWork: [],
11
+ lastHandoff: null,
12
+ docIndex: {
13
+ masterDoc: "HOLISTIC.md",
14
+ stateFile: ".holistic/state.json",
15
+ sessionsDir: ".holistic/sessions",
16
+ contextDir: ".holistic/context",
17
+ adapterDocs: {
18
+ codex: ".holistic/context/adapters/codex.md",
19
+ claude: ".holistic/context/adapters/claude-cowork.md",
20
+ antigravity: ".holistic/context/adapters/antigravity.md",
21
+ gemini: ".holistic/context/adapters/gemini.md",
22
+ copilot: ".holistic/context/adapters/copilot.md",
23
+ cursor: ".holistic/context/adapters/cursor.md",
24
+ goose: ".holistic/context/adapters/goose.md",
25
+ gsd: ".holistic/context/adapters/gsd.md",
26
+ },
27
+ currentPlanDoc: ".holistic/context/current-plan.md",
28
+ protocolDoc: ".holistic/context/session-protocol.md",
29
+ historyDoc: ".holistic/context/project-history.md",
30
+ regressionDoc: ".holistic/context/regression-watch.md",
31
+ zeroTouchDoc: ".holistic/context/zero-touch.md",
32
+ },
33
+ repoSnapshot: {},
34
+ ...overrides,
35
+ };
36
+ }
37
+ export const tests = [
38
+ {
39
+ name: "buildStartupGreeting returns null for empty state",
40
+ run: () => {
41
+ const state = makeTestState();
42
+ const greeting = buildStartupGreeting(state, "claude");
43
+ assert.equal(greeting, null);
44
+ },
45
+ },
46
+ {
47
+ name: "buildStartupGreeting includes objective, status, and next steps from active session",
48
+ run: () => {
49
+ const state = makeTestState({
50
+ activeSession: {
51
+ id: "session-test",
52
+ agent: "claude",
53
+ branch: "main",
54
+ startedAt: "2026-03-21T12:00:00.000Z",
55
+ updatedAt: "2026-03-21T12:00:00.000Z",
56
+ endedAt: null,
57
+ status: "active",
58
+ title: "Test session",
59
+ currentGoal: "Build feature X",
60
+ currentPlan: ["Step 1", "Step 2"],
61
+ latestStatus: "Making progress on X",
62
+ workDone: ["Completed Y"],
63
+ triedItems: [],
64
+ nextSteps: ["Continue with Z", "Test feature X"],
65
+ assumptions: [],
66
+ blockers: [],
67
+ references: [],
68
+ impactNotes: ["Feature X improves performance"],
69
+ regressionRisks: ["Watch for edge case A"],
70
+ changedFiles: ["src/feature.ts"],
71
+ checkpointCount: 3,
72
+ lastCheckpointReason: "checkpoint",
73
+ resumeRecap: [],
74
+ },
75
+ });
76
+ const greeting = buildStartupGreeting(state, "claude");
77
+ assert.ok(greeting);
78
+ assert.match(greeting, /Holistic resume/);
79
+ assert.match(greeting, /Current objective: Build feature X/);
80
+ assert.match(greeting, /Latest status: Making progress on X/);
81
+ assert.match(greeting, /Try next: Continue with Z; Test feature X/);
82
+ assert.match(greeting, /Overall impact so far: Feature X improves performance/);
83
+ assert.match(greeting, /Regression watch: Watch for edge case A/);
84
+ },
85
+ },
86
+ {
87
+ name: "buildStartupGreeting includes 'continue, tweak, start-new' choices for active session",
88
+ run: () => {
89
+ const state = makeTestState({
90
+ activeSession: {
91
+ id: "session-test",
92
+ agent: "claude",
93
+ branch: "main",
94
+ startedAt: "2026-03-21T12:00:00.000Z",
95
+ updatedAt: "2026-03-21T12:00:00.000Z",
96
+ endedAt: null,
97
+ status: "active",
98
+ title: "Test session",
99
+ currentGoal: "Test goal",
100
+ currentPlan: ["Step 1"],
101
+ latestStatus: "Test status",
102
+ workDone: [],
103
+ triedItems: [],
104
+ nextSteps: [],
105
+ assumptions: [],
106
+ blockers: [],
107
+ references: [],
108
+ impactNotes: [],
109
+ regressionRisks: [],
110
+ changedFiles: [],
111
+ checkpointCount: 1,
112
+ lastCheckpointReason: "test",
113
+ resumeRecap: [],
114
+ },
115
+ });
116
+ const greeting = buildStartupGreeting(state, "claude");
117
+ assert.ok(greeting);
118
+ assert.match(greeting, /Choices: continue, tweak, start-new/);
119
+ },
120
+ },
121
+ {
122
+ name: "buildStartupGreeting includes adapter doc path",
123
+ run: () => {
124
+ const state = makeTestState({
125
+ activeSession: {
126
+ id: "session-test",
127
+ agent: "gsd",
128
+ branch: "main",
129
+ startedAt: "2026-03-21T12:00:00.000Z",
130
+ updatedAt: "2026-03-21T12:00:00.000Z",
131
+ endedAt: null,
132
+ status: "active",
133
+ title: "Test session",
134
+ currentGoal: "Test goal",
135
+ currentPlan: [],
136
+ latestStatus: "Test status",
137
+ workDone: [],
138
+ triedItems: [],
139
+ nextSteps: [],
140
+ assumptions: [],
141
+ blockers: [],
142
+ references: [],
143
+ impactNotes: [],
144
+ regressionRisks: [],
145
+ changedFiles: [],
146
+ checkpointCount: 1,
147
+ lastCheckpointReason: "test",
148
+ resumeRecap: [],
149
+ },
150
+ });
151
+ const greeting = buildStartupGreeting(state, "gsd");
152
+ assert.ok(greeting);
153
+ assert.match(greeting, /Adapter doc: \.holistic\/context\/adapters\/gsd\.md/);
154
+ },
155
+ },
156
+ {
157
+ name: "buildStartupGreeting includes long-term history and regression watch paths",
158
+ run: () => {
159
+ const state = makeTestState({
160
+ lastHandoff: {
161
+ sessionId: "session-old",
162
+ summary: "Previous work complete",
163
+ blockers: [],
164
+ nextAction: "Start new feature",
165
+ committedAt: null,
166
+ createdAt: "2026-03-21T11:00:00.000Z",
167
+ },
168
+ });
169
+ const greeting = buildStartupGreeting(state, "claude");
170
+ assert.ok(greeting);
171
+ assert.match(greeting, /Long-term history: \.holistic\/context\/project-history\.md/);
172
+ assert.match(greeting, /Regression watch: \.holistic\/context\/regression-watch\.md/);
173
+ assert.match(greeting, /Zero-touch architecture: \.holistic\/context\/zero-touch\.md/);
174
+ },
175
+ },
176
+ {
177
+ name: "buildStartupGreeting shows last handoff when no active session",
178
+ run: () => {
179
+ const state = makeTestState({
180
+ lastHandoff: {
181
+ sessionId: "session-old",
182
+ summary: "Completed feature Y successfully",
183
+ blockers: ["Waiting for API access"],
184
+ nextAction: "Continue with feature Z",
185
+ committedAt: null,
186
+ createdAt: "2026-03-21T11:00:00.000Z",
187
+ },
188
+ });
189
+ const greeting = buildStartupGreeting(state, "claude");
190
+ assert.ok(greeting);
191
+ assert.match(greeting, /Last handoff summary: Completed feature Y successfully/);
192
+ assert.match(greeting, /Recommended next action: Continue with feature Z/);
193
+ assert.match(greeting, /Known blockers: Waiting for API access/);
194
+ },
195
+ },
196
+ {
197
+ name: "buildStartupGreeting shows pending work when no active session or handoff",
198
+ run: () => {
199
+ const state = makeTestState({
200
+ pendingWork: [
201
+ {
202
+ id: "pending-1",
203
+ title: "Fix authentication bug",
204
+ context: "Users cannot log in with OAuth",
205
+ recommendedNextStep: "Debug OAuth flow",
206
+ priority: "high",
207
+ carriedFromSession: "session-old",
208
+ createdAt: "2026-03-21T11:00:00.000Z",
209
+ },
210
+ ],
211
+ });
212
+ const greeting = buildStartupGreeting(state, "claude");
213
+ assert.ok(greeting);
214
+ assert.match(greeting, /Top pending work: Fix authentication bug/);
215
+ assert.match(greeting, /Pending context: Users cannot log in with OAuth/);
216
+ assert.match(greeting, /Suggested next step: Debug OAuth flow/);
217
+ },
218
+ },
219
+ {
220
+ name: "buildStartupGreeting includes recommended command",
221
+ run: () => {
222
+ const state = makeTestState({
223
+ activeSession: {
224
+ id: "session-test",
225
+ agent: "claude",
226
+ branch: "main",
227
+ startedAt: "2026-03-21T12:00:00.000Z",
228
+ updatedAt: "2026-03-21T12:00:00.000Z",
229
+ endedAt: null,
230
+ status: "active",
231
+ title: "Test",
232
+ currentGoal: "Test",
233
+ currentPlan: [],
234
+ latestStatus: "Test",
235
+ workDone: [],
236
+ triedItems: [],
237
+ nextSteps: [],
238
+ assumptions: [],
239
+ blockers: [],
240
+ references: [],
241
+ impactNotes: [],
242
+ regressionRisks: [],
243
+ changedFiles: [],
244
+ checkpointCount: 1,
245
+ lastCheckpointReason: "test",
246
+ resumeRecap: [],
247
+ },
248
+ });
249
+ const greeting = buildStartupGreeting(state, "claude");
250
+ assert.ok(greeting);
251
+ assert.match(greeting, /Recommended command: holistic resume --continue/);
252
+ },
253
+ },
254
+ ];
255
+ //# sourceMappingURL=mcp-notification.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-notification.test.js","sourceRoot":"","sources":["../../src/__tests__/mcp-notification.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { HandoffInput, HolisticState, SessionDiff, SessionRecord } from './core/types.js';
2
+ export declare function renderResumeOutput(body: string): string;
3
+ export declare function finalizeDraftHandoffInput(session: SessionRecord, input: HandoffInput): HandoffInput;
4
+ export declare function renderDiff(fromSession: SessionRecord, toSession: SessionRecord, diff: SessionDiff): string;
5
+ export declare function renderStatus(state: HolisticState): string;
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAA4C,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAoFvJ,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAyED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAcnG;AAMD,wBAAgB,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAoE1G;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA4DzD"}