gipity 1.0.264 → 1.0.306

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 (95) hide show
  1. package/dist/__tests__/capture-transcript.test.d.ts +1 -0
  2. package/dist/__tests__/capture-transcript.test.js +92 -0
  3. package/dist/__tests__/capture-transcript.test.js.map +1 -0
  4. package/dist/__tests__/cli-smoke.test.js +5 -5
  5. package/dist/__tests__/cli-smoke.test.js.map +1 -1
  6. package/dist/__tests__/prompts.test.d.ts +1 -0
  7. package/dist/__tests__/prompts.test.js +129 -0
  8. package/dist/__tests__/prompts.test.js.map +1 -0
  9. package/dist/__tests__/push-cas.test.d.ts +1 -0
  10. package/dist/__tests__/push-cas.test.js +133 -0
  11. package/dist/__tests__/push-cas.test.js.map +1 -0
  12. package/dist/__tests__/sync-apply.test.d.ts +1 -0
  13. package/dist/__tests__/sync-apply.test.js +457 -0
  14. package/dist/__tests__/sync-apply.test.js.map +1 -0
  15. package/dist/__tests__/sync-lock.test.d.ts +1 -0
  16. package/dist/__tests__/sync-lock.test.js +105 -0
  17. package/dist/__tests__/sync-lock.test.js.map +1 -0
  18. package/dist/__tests__/sync.test.js +115 -151
  19. package/dist/__tests__/sync.test.js.map +1 -1
  20. package/dist/adopt-cwd.d.ts +66 -0
  21. package/dist/adopt-cwd.js +255 -0
  22. package/dist/adopt-cwd.js.map +1 -0
  23. package/dist/api.d.ts +11 -1
  24. package/dist/api.js +46 -3
  25. package/dist/api.js.map +1 -1
  26. package/dist/capture/sources/claude-code.d.ts +78 -0
  27. package/dist/capture/sources/claude-code.js +158 -0
  28. package/dist/capture/sources/claude-code.js.map +1 -0
  29. package/dist/commands/chat.js +8 -8
  30. package/dist/commands/chat.js.map +1 -1
  31. package/dist/commands/claude.js +265 -129
  32. package/dist/commands/claude.js.map +1 -1
  33. package/dist/commands/init.js +34 -59
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/location.js +1 -1
  36. package/dist/commands/location.js.map +1 -1
  37. package/dist/commands/logout.js +1 -1
  38. package/dist/commands/logout.js.map +1 -1
  39. package/dist/commands/page-inspect.js +36 -25
  40. package/dist/commands/page-inspect.js.map +1 -1
  41. package/dist/commands/page-screenshot.d.ts +2 -0
  42. package/dist/commands/page-screenshot.js +212 -0
  43. package/dist/commands/page-screenshot.js.map +1 -0
  44. package/dist/commands/project.js +71 -12
  45. package/dist/commands/project.js.map +1 -1
  46. package/dist/commands/relay.js +1 -1
  47. package/dist/commands/relay.js.map +1 -1
  48. package/dist/commands/scaffold.js +19 -13
  49. package/dist/commands/scaffold.js.map +1 -1
  50. package/dist/commands/sync.js +15 -24
  51. package/dist/commands/sync.js.map +1 -1
  52. package/dist/commands/uninstall.js +1 -1
  53. package/dist/commands/uninstall.js.map +1 -1
  54. package/dist/commands/update.js +1 -1
  55. package/dist/commands/update.js.map +1 -1
  56. package/dist/config.d.ts +9 -0
  57. package/dist/config.js +9 -0
  58. package/dist/config.js.map +1 -1
  59. package/dist/helpers/sync.d.ts +4 -2
  60. package/dist/helpers/sync.js +13 -7
  61. package/dist/helpers/sync.js.map +1 -1
  62. package/dist/hooks/capture-runner.d.ts +24 -0
  63. package/dist/hooks/capture-runner.js +233 -0
  64. package/dist/hooks/capture-runner.js.map +1 -0
  65. package/dist/index.js +17 -16
  66. package/dist/index.js.map +1 -1
  67. package/dist/project-setup.d.ts +21 -0
  68. package/dist/project-setup.js +42 -0
  69. package/dist/project-setup.js.map +1 -0
  70. package/dist/prompts.d.ts +7 -0
  71. package/dist/prompts.js +25 -2
  72. package/dist/prompts.js.map +1 -1
  73. package/dist/relay/daemon.d.ts +8 -8
  74. package/dist/relay/daemon.js +23 -61
  75. package/dist/relay/daemon.js.map +1 -1
  76. package/dist/relay/device-http.d.ts +9 -0
  77. package/dist/relay/device-http.js +58 -0
  78. package/dist/relay/device-http.js.map +1 -0
  79. package/dist/relay/onboarding.js +3 -2
  80. package/dist/relay/onboarding.js.map +1 -1
  81. package/dist/setup.d.ts +8 -0
  82. package/dist/setup.js +55 -16
  83. package/dist/setup.js.map +1 -1
  84. package/dist/sync.d.ts +55 -37
  85. package/dist/sync.js +628 -445
  86. package/dist/sync.js.map +1 -1
  87. package/dist/updater/bootstrap.d.ts +6 -1
  88. package/dist/updater/bootstrap.js +21 -13
  89. package/dist/updater/bootstrap.js.map +1 -1
  90. package/dist/updater/shim.js +12 -1
  91. package/dist/updater/shim.js.map +1 -1
  92. package/dist/upload.d.ts +13 -2
  93. package/dist/upload.js +59 -6
  94. package/dist/upload.js.map +1 -1
  95. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/config.d.ts CHANGED
@@ -6,6 +6,11 @@ export interface GipityConfig {
6
6
  conversationGuid: string | null;
7
7
  apiBase: string;
8
8
  ignore: string[];
9
+ /** Install Claude Code (and other remote agent) lifecycle hooks that
10
+ * mirror the terminal session into the Gipity DB so the web CLI can
11
+ * display it read-only. Default: true. Set false per-project to opt
12
+ * out of capture without losing the other integration features. */
13
+ captureHooks?: boolean;
9
14
  }
10
15
  export declare function setApiBaseOverride(url: string): void;
11
16
  export declare function getApiBaseOverride(): string | null;
@@ -27,4 +32,8 @@ export declare function resolveProjectContext(opts?: {
27
32
  }): Promise<ResolvedContext>;
28
33
  export declare function clearConfigCache(): void;
29
34
  export declare function saveConfig(data: GipityConfig): void;
35
+ /** Write `.gipity.json` at an explicit directory, bypassing the walk-up search.
36
+ * Use this when initializing a brand-new project directory so we never
37
+ * accidentally rewrite a parent project's config file. */
38
+ export declare function saveConfigAt(dir: string, data: GipityConfig): void;
30
39
  export declare function shouldIgnore(filePath: string, ignorePatterns: string[]): boolean;
package/dist/config.js CHANGED
@@ -130,6 +130,15 @@ export function saveConfig(data) {
130
130
  cached = data;
131
131
  cachedPath = path;
132
132
  }
133
+ /** Write `.gipity.json` at an explicit directory, bypassing the walk-up search.
134
+ * Use this when initializing a brand-new project directory so we never
135
+ * accidentally rewrite a parent project's config file. */
136
+ export function saveConfigAt(dir, data) {
137
+ const path = resolve(dir, CONFIG_FILE);
138
+ writeFileSync(path, JSON.stringify(data, null, 2) + '\n');
139
+ cached = data;
140
+ cachedPath = path;
141
+ }
133
142
  export function shouldIgnore(filePath, ignorePatterns) {
134
143
  for (const pattern of ignorePatterns) {
135
144
  // Simple glob matching: exact match, prefix match, or extension match
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * sync.ts — Shared sync-before-action helper.
3
3
  */
4
4
  /**
5
- * Sync local files to server before an action (deploy, test, scaffold).
6
- * Respects --no-sync and --json flags.
5
+ * Sync local files with the server before an action (deploy, test, scaffold).
6
+ * Respects --no-sync and --json flags. Non-interactive: bulk-deletion guard
7
+ * blocks accidental wipes from hooks; user must run `gipity sync` manually
8
+ * (or pass --force) to unblock.
7
9
  */
8
10
  export declare function syncBeforeAction(opts: {
9
11
  sync?: boolean;
@@ -1,18 +1,24 @@
1
1
  /**
2
2
  * sync.ts — Shared sync-before-action helper.
3
3
  */
4
- import { syncUp } from '../sync.js';
5
- import { muted } from '../colors.js';
4
+ import { sync } from '../sync.js';
5
+ import { muted, error as clrError } from '../colors.js';
6
6
  /**
7
- * Sync local files to server before an action (deploy, test, scaffold).
8
- * Respects --no-sync and --json flags.
7
+ * Sync local files with the server before an action (deploy, test, scaffold).
8
+ * Respects --no-sync and --json flags. Non-interactive: bulk-deletion guard
9
+ * blocks accidental wipes from hooks; user must run `gipity sync` manually
10
+ * (or pass --force) to unblock.
9
11
  */
10
12
  export async function syncBeforeAction(opts) {
11
13
  if (opts.sync === false)
12
14
  return;
13
- const result = await syncUp();
14
- if (result.pushed > 0 && !opts.json) {
15
- console.log(muted(`Synced ${result.pushed} file${result.pushed > 1 ? 's' : ''}`));
15
+ const result = await sync({ interactive: false });
16
+ if (result.applied > 0 && !opts.json) {
17
+ console.log(muted(`Synced ${result.applied} change${result.applied > 1 ? 's' : ''}`));
18
+ }
19
+ if (result.errors.length > 0 && !opts.json) {
20
+ for (const e of result.errors)
21
+ console.error(clrError(`[sync] ${e}`));
16
22
  }
17
23
  }
18
24
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/helpers/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAwC;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/helpers/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAwC;IAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Internal hook runner — invoked by Claude Code's lifecycle hooks
4
+ * (SessionStart, Stop, SubagentStop, SessionEnd) to mirror a terminal
5
+ * `gipity claude` session into the Gipity server so the web CLI can
6
+ * display it read-only.
7
+ *
8
+ * Not a user-facing `gipity` subcommand by design: users never invoke
9
+ * this directly. `setupClaudeHooks` wires up hook entries that call
10
+ * `node <absolute-path>/capture-runner.js <source> <event>`.
11
+ *
12
+ * Usage:
13
+ * node capture-runner.js <source> <event>
14
+ * source: 'claude-code' (today) | future: 'codex', …
15
+ * event: 'session-start' | 'stop' | 'subagent-stop' | 'session-end'
16
+ *
17
+ * Graceful no-ops (exit 0 silently):
18
+ * - GIPITY_CONVERSATION_GUID env var unset (hook fired from a bare
19
+ * `claude`, not `gipity claude`).
20
+ * - The machine isn't paired — no device token available.
21
+ * - Anything unexpected (parse error, network error, etc.). We must
22
+ * not break the user's interactive session.
23
+ */
24
+ export {};
@@ -0,0 +1,233 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Internal hook runner — invoked by Claude Code's lifecycle hooks
4
+ * (SessionStart, Stop, SubagentStop, SessionEnd) to mirror a terminal
5
+ * `gipity claude` session into the Gipity server so the web CLI can
6
+ * display it read-only.
7
+ *
8
+ * Not a user-facing `gipity` subcommand by design: users never invoke
9
+ * this directly. `setupClaudeHooks` wires up hook entries that call
10
+ * `node <absolute-path>/capture-runner.js <source> <event>`.
11
+ *
12
+ * Usage:
13
+ * node capture-runner.js <source> <event>
14
+ * source: 'claude-code' (today) | future: 'codex', …
15
+ * event: 'session-start' | 'stop' | 'subagent-stop' | 'session-end'
16
+ *
17
+ * Graceful no-ops (exit 0 silently):
18
+ * - GIPITY_CONVERSATION_GUID env var unset (hook fired from a bare
19
+ * `claude`, not `gipity claude`).
20
+ * - The machine isn't paired — no device token available.
21
+ * - Anything unexpected (parse error, network error, etc.). We must
22
+ * not break the user's interactive session.
23
+ */
24
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, openSync, closeSync, createReadStream, } from 'fs';
25
+ import { homedir } from 'os';
26
+ import { join } from 'path';
27
+ import { getDevice } from '../relay/state.js';
28
+ import { deviceFetch } from '../relay/device-http.js';
29
+ import { parseTranscript, } from '../capture/sources/claude-code.js';
30
+ const CAPTURE_DIR = join(homedir(), '.gipity', 'capture-state');
31
+ const INGEST_BATCH_MAX = 100; // server caps at 200; stay comfortably under
32
+ function statePath(convGuid) {
33
+ return join(CAPTURE_DIR, `${convGuid}.json`);
34
+ }
35
+ function lockPath(convGuid) {
36
+ return join(CAPTURE_DIR, `${convGuid}.lock`);
37
+ }
38
+ function readState(convGuid) {
39
+ const p = statePath(convGuid);
40
+ if (!existsSync(p))
41
+ return null;
42
+ try {
43
+ const raw = readFileSync(p, 'utf-8');
44
+ const parsed = JSON.parse(raw);
45
+ return { last_uuid: typeof parsed.last_uuid === 'string' ? parsed.last_uuid : null };
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ function writeState(convGuid, st) {
52
+ mkdirSync(CAPTURE_DIR, { recursive: true });
53
+ writeFileSync(statePath(convGuid), JSON.stringify(st, null, 2) + '\n');
54
+ }
55
+ function deleteState(convGuid) {
56
+ try {
57
+ unlinkSync(statePath(convGuid));
58
+ }
59
+ catch { /* already gone */ }
60
+ try {
61
+ unlinkSync(lockPath(convGuid));
62
+ }
63
+ catch { /* already gone */ }
64
+ }
65
+ /** Simple exclusive file-lock via `wx` open. Stop and SubagentStop can
66
+ * fire concurrently on the same conv (e.g. a Task subagent finishing
67
+ * while the parent is also wrapping up), and a crashed hook retry would
68
+ * race the next one. Holding a lock for the duration serializes them.
69
+ * Returns a releaser (or null if the lock is already held — in which
70
+ * case we skip this run; the holder will catch our data on its next
71
+ * transcript scan). */
72
+ function acquireLock(convGuid) {
73
+ mkdirSync(CAPTURE_DIR, { recursive: true });
74
+ const path = lockPath(convGuid);
75
+ let fd;
76
+ try {
77
+ fd = openSync(path, 'wx');
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ return () => {
83
+ try {
84
+ closeSync(fd);
85
+ }
86
+ catch { /* ignore */ }
87
+ try {
88
+ unlinkSync(path);
89
+ }
90
+ catch { /* ignore */ }
91
+ };
92
+ }
93
+ async function readStdin() {
94
+ if (process.stdin.isTTY)
95
+ return '';
96
+ return await new Promise((resolve) => {
97
+ let buf = '';
98
+ process.stdin.setEncoding('utf-8');
99
+ process.stdin.on('data', (chunk) => { buf += chunk; });
100
+ process.stdin.on('end', () => resolve(buf));
101
+ process.stdin.on('error', () => resolve(buf));
102
+ });
103
+ }
104
+ async function postEntries(convGuid, entries) {
105
+ if (!entries.length)
106
+ return true;
107
+ // Batch into server-cap-safe chunks.
108
+ for (let i = 0; i < entries.length; i += INGEST_BATCH_MAX) {
109
+ const slice = entries.slice(i, i + INGEST_BATCH_MAX);
110
+ let res;
111
+ try {
112
+ res = await deviceFetch('POST', `/remote-sessions/${encodeURIComponent(convGuid)}/ingest`, { entries: slice }, 15_000);
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ if (!res.ok)
118
+ return false;
119
+ }
120
+ return true;
121
+ }
122
+ async function readWholeFile(path) {
123
+ return await new Promise((resolve, reject) => {
124
+ let buf = '';
125
+ const s = createReadStream(path, { encoding: 'utf-8' });
126
+ s.on('data', (chunk) => { buf += typeof chunk === 'string' ? chunk : chunk.toString('utf-8'); });
127
+ s.on('end', () => resolve(buf));
128
+ s.on('error', (err) => reject(err));
129
+ });
130
+ }
131
+ async function handleSessionStart(convGuid, hook) {
132
+ if (!hook.session_id)
133
+ return;
134
+ const existing = readState(convGuid);
135
+ if (!existing)
136
+ writeState(convGuid, { last_uuid: null });
137
+ const entries = [{
138
+ kind: 'attach',
139
+ session_id: hook.session_id,
140
+ cwd: hook.cwd,
141
+ source: 'startup',
142
+ source_uuid: `${hook.session_id}-attach`,
143
+ }];
144
+ await postEntries(convGuid, entries);
145
+ }
146
+ async function handleStopFamily(convGuid, hook, isSubagent) {
147
+ void isSubagent;
148
+ if (!hook.transcript_path || !existsSync(hook.transcript_path))
149
+ return;
150
+ const release = acquireLock(convGuid);
151
+ if (!release)
152
+ return; // another hook instance is already flushing; it'll catch our lines
153
+ try {
154
+ const state = readState(convGuid) ?? { last_uuid: null };
155
+ const content = await readWholeFile(hook.transcript_path);
156
+ let result = parseTranscript(content, state.last_uuid);
157
+ if (!result.foundWatermark && state.last_uuid !== null) {
158
+ // Transcript rotated (/clear or compact) — watermark isn't present.
159
+ // Replay from top; server dedupes via the source_uuid unique index.
160
+ result = parseTranscript(content, null);
161
+ }
162
+ const ok = await postEntries(convGuid, result.entries);
163
+ if (ok && result.lastUuid) {
164
+ writeState(convGuid, { last_uuid: result.lastUuid });
165
+ }
166
+ }
167
+ finally {
168
+ release();
169
+ }
170
+ }
171
+ async function handleSessionEnd(convGuid, hook, source) {
172
+ // Flush any tail lines one last time — SessionEnd fires after the final
173
+ // Stop, so there's usually nothing new, but a race between Stop and
174
+ // SessionEnd could leave lines behind.
175
+ if (hook.transcript_path && existsSync(hook.transcript_path)) {
176
+ await handleStopFamily(convGuid, hook, false);
177
+ }
178
+ const sessionId = hook.session_id ?? 'unknown';
179
+ const finishedLabel = displayName(source);
180
+ const entries = [{
181
+ kind: 'system',
182
+ content: `${finishedLabel} finished`,
183
+ source_uuid: `${sessionId}-end`,
184
+ }];
185
+ await postEntries(convGuid, entries);
186
+ deleteState(convGuid);
187
+ }
188
+ function displayName(source) {
189
+ if (source === 'claude-code')
190
+ return 'Claude Code';
191
+ return source;
192
+ }
193
+ async function main() {
194
+ const convGuid = process.env.GIPITY_CONVERSATION_GUID;
195
+ if (!convGuid)
196
+ return; // bare `claude`, not `gipity claude`
197
+ if (!getDevice())
198
+ return; // machine not paired
199
+ const [source, event] = process.argv.slice(2);
200
+ if (!source || !event)
201
+ return;
202
+ const stdin = await readStdin();
203
+ let hook = {};
204
+ if (stdin.trim()) {
205
+ try {
206
+ hook = JSON.parse(stdin);
207
+ }
208
+ catch { /* ignore — event may not require transcript */ }
209
+ }
210
+ try {
211
+ switch (event) {
212
+ case 'session-start':
213
+ await handleSessionStart(convGuid, hook);
214
+ break;
215
+ case 'stop':
216
+ await handleStopFamily(convGuid, hook, false);
217
+ break;
218
+ case 'subagent-stop':
219
+ await handleStopFamily(convGuid, hook, true);
220
+ break;
221
+ case 'session-end':
222
+ await handleSessionEnd(convGuid, hook, source);
223
+ break;
224
+ default:
225
+ return; // unknown event — silent no-op
226
+ }
227
+ }
228
+ catch {
229
+ // Never break the user's interactive session. All failures are silent.
230
+ }
231
+ }
232
+ void main();
233
+ //# sourceMappingURL=capture-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-runner.js","sourceRoot":"","sources":["../../src/hooks/capture-runner.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { Command, Help } from 'commander';
2
+ import { Command, Help, Option } from 'commander';
3
3
  import { readFileSync } from 'fs';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { dirname, resolve } from 'path';
@@ -26,6 +26,7 @@ import { claudeCommand } from './commands/claude.js';
26
26
  import { scaffoldCommand } from './commands/scaffold.js';
27
27
  import { logsCommand } from './commands/logs.js';
28
28
  import { pageInspectCommand } from './commands/page-inspect.js';
29
+ import { pageScreenshotCommand } from './commands/page-screenshot.js';
29
30
  import { recordsCommand } from './commands/records.js';
30
31
  import { fnCommand } from './commands/fn.js';
31
32
  import { rbacCommand } from './commands/rbac.js';
@@ -56,26 +57,29 @@ function configureHelp(cmd) {
56
57
  }
57
58
  const program = new Command();
58
59
  // ── Command groups (logical ordering within each) ──────────────────────
59
- // Order within each group is intentional: Setup follows the user's first-run
60
- // path; Project follows the dev loop; Resources groups data → compute →
61
- // observability access; Agent flows chat → run → manage → bill.
62
- const setupGroup = [loginCommand, logoutCommand, initCommand, claudeCommand, relayCommand];
63
- const projectGroup = [statusCommand, syncCommand, pushCommand, uploadCommand, deployCommand, testCommand, scaffoldCommand, domainCommand];
64
- const resourceGroup = [dbCommand, memoryCommand, fileCommand, fnCommand, sandboxCommand, pageInspectCommand, generateCommand, logsCommand, recordsCommand, auditCommand, rbacCommand, emailCommand, skillsCommand, locationCommand];
65
- const agentGroup = [chatCommand, agentCommand, projectCommand, workflowCommand, creditsCommand];
66
- const maintenanceGroup = [doctorCommand, updateCommand, uninstallCommand];
60
+ const commonGroup = [skillsCommand, projectCommand, scaffoldCommand, deployCommand];
61
+ const connectGroup = [claudeCommand, relayCommand];
62
+ const projectGroup = [domainCommand, statusCommand, initCommand];
63
+ const filesGroup = [fileCommand, syncCommand, pushCommand, uploadCommand];
64
+ const appBuildingGroup = [testCommand, fnCommand, dbCommand, logsCommand, workflowCommand, rbacCommand, auditCommand, recordsCommand];
65
+ const utilitiesGroup = [pageInspectCommand, pageScreenshotCommand, sandboxCommand, generateCommand, emailCommand, locationCommand];
66
+ const agentGroup = [chatCommand, memoryCommand, agentCommand];
67
+ const setupGroup = [loginCommand, logoutCommand, creditsCommand, doctorCommand, updateCommand, uninstallCommand];
67
68
  const HELP_SECTIONS = [
68
- { title: 'Setup', cmds: setupGroup },
69
+ { title: 'Common', cmds: commonGroup },
70
+ { title: 'Connect', cmds: connectGroup },
69
71
  { title: 'Project', cmds: projectGroup },
70
- { title: 'Resources', cmds: resourceGroup },
72
+ { title: 'Files', cmds: filesGroup },
73
+ { title: 'App building', cmds: appBuildingGroup },
74
+ { title: 'Utilities', cmds: utilitiesGroup },
71
75
  { title: 'Agent', cmds: agentGroup },
72
- { title: 'Maintenance', cmds: maintenanceGroup },
76
+ { title: 'Setup', cmds: setupGroup },
73
77
  ];
74
78
  program
75
79
  .name('gipity')
76
80
  .description(`${brand(bold('Gipity CLI'))} ${dim('—')} Cloud agents for builders\n\n ${dim('90+ tools, persistent memory, app hosting, databases, deploys. Pair with Claude Code or use standalone.')}`)
77
81
  .version(pkg.version, '-v, --version')
78
- .option('--api-base <url>', 'API base URL (e.g. http://localhost:7200)')
82
+ .addOption(new Option('--api-base <url>', 'API base URL').hideHelp())
79
83
  .option('-y, --yes', 'Skip confirmation prompts');
80
84
  program.hook('preAction', () => {
81
85
  const globalOpts = program.opts();
@@ -87,11 +91,8 @@ program.hook('preAction', () => {
87
91
  // ── Custom top-level help: version banner + grouped commands ────────────
88
92
  program.configureHelp({
89
93
  formatHelp(cmd, helper) {
90
- // Command column: tight to the longest command name (don't let long
91
- // option terms like `--api-base <url>` blow out the gutter).
92
94
  const cmdColWidth = Math.max(...HELP_SECTIONS.flatMap(s => s.cmds.map(c => c.name().length)));
93
95
  const padCmd = (s) => s.padEnd(cmdColWidth);
94
- // Options get their own narrower column based on their own widths.
95
96
  const opts = helper.visibleOptions(cmd);
96
97
  const optColWidth = opts.length ? Math.max(...opts.map(o => helper.optionTerm(o).length)) : 0;
97
98
  const padOpt = (s) => s.padEnd(optColWidth);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface FinalizeLocalProjectOpts {
2
+ /** Absolute path to the project dir (already mkdir'd by the caller). */
3
+ dir: string;
4
+ projectGuid: string;
5
+ projectSlug: string;
6
+ accountSlug: string;
7
+ agentGuid: string;
8
+ /** When true, sync operations are non-fatal and fall through with a log. Used
9
+ * by `project create` where the remote project was just created and may not
10
+ * have anything to sync yet; set false for `init` which prefers to fail loud. */
11
+ sync?: 'soft' | 'strict';
12
+ /** Allow interactive bulk-deletion confirmation. Hook-driven callers pass false. */
13
+ interactive?: boolean;
14
+ }
15
+ export interface FinalizeResult {
16
+ applied: number;
17
+ }
18
+ /** Write `.gipity.json` in `dir`, chdir into it so the hook/skill writers
19
+ * target the right place, sync files, and install Claude Code hooks/skills/
20
+ * gitignore. Returns sync counts so callers can print a summary. */
21
+ export declare function finalizeLocalProject(opts: FinalizeLocalProjectOpts): Promise<FinalizeResult>;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Shared "finish linking a project to this machine" helper. Both `gipity init`
3
+ * and `gipity project create` need to write `.gipity.json`, sync files, and
4
+ * drop the Claude Code hooks/skills/gitignore into the target dir — consolidating
5
+ * here keeps both call sites honest and the wording consistent.
6
+ */
7
+ import { clearConfigCache, saveConfigAt, getApiBaseOverride } from './config.js';
8
+ import { sync } from './sync.js';
9
+ import { setupClaudeHooks, setupClaudeMd, setupAgentsMd, setupGitignore, DEFAULT_SYNC_IGNORE } from './setup.js';
10
+ /** Write `.gipity.json` in `dir`, chdir into it so the hook/skill writers
11
+ * target the right place, sync files, and install Claude Code hooks/skills/
12
+ * gitignore. Returns sync counts so callers can print a summary. */
13
+ export async function finalizeLocalProject(opts) {
14
+ const config = {
15
+ projectGuid: opts.projectGuid,
16
+ projectSlug: opts.projectSlug,
17
+ accountSlug: opts.accountSlug,
18
+ agentGuid: opts.agentGuid,
19
+ conversationGuid: null,
20
+ apiBase: getApiBaseOverride() || 'https://a.gipity.ai',
21
+ ignore: [...DEFAULT_SYNC_IGNORE],
22
+ };
23
+ saveConfigAt(opts.dir, config);
24
+ process.chdir(opts.dir);
25
+ clearConfigCache();
26
+ let applied = 0;
27
+ try {
28
+ const result = await sync({ interactive: opts.interactive ?? false });
29
+ applied = result.applied;
30
+ }
31
+ catch (err) {
32
+ if (opts.sync === 'strict')
33
+ throw err;
34
+ // soft mode — swallow; caller can log
35
+ }
36
+ setupClaudeHooks();
37
+ setupClaudeMd();
38
+ setupAgentsMd();
39
+ setupGitignore();
40
+ return { applied };
41
+ }
42
+ //# sourceMappingURL=project-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-setup.js","sourceRoot":"","sources":["../src/project-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAqBjH;;qEAEqE;AACrE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IACvE,MAAM,MAAM,GAAiB;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,kBAAkB,EAAE,IAAI,qBAAqB;QACtD,MAAM,EAAE,CAAC,GAAG,mBAAmB,CAAC;KACjC,CAAC;IAEF,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,gBAAgB,EAAE,CAAC;IAEnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;QACtC,sCAAsC;IACxC,CAAC;IAED,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;IAEjB,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
package/dist/prompts.d.ts CHANGED
@@ -61,6 +61,13 @@ export declare function buildNewProjectPrompt(opts: ProjectContextOpts & {
61
61
  /** Compact capability reminder — safe to include on every resumed-session message.
62
62
  * Hedges against Claude compacting away the original context block mid-session. */
63
63
  export declare const PLATFORM_REMINDER = "This project runs on the Gipity platform. All CLI commands and service APIs are documented in CLAUDE.md.";
64
+ /** Tags that bracket the user's actual message inside a wrap. All agent-facing
65
+ * context and instructions live BEFORE the opening tag; nothing comes after
66
+ * the closing tag. The client-side `stripPreamble` renderer in
67
+ * `platform/client/src/ts/commands/claude-display.ts` looks for the same
68
+ * strings — keep the two copies in sync (there is a drift-guard test). */
69
+ export declare const USER_MSG_OPEN = "<gipity-user-message>";
70
+ export declare const USER_MSG_CLOSE = "</gipity-user-message>";
64
71
  /** Resume wrap: compact header + capability reminder + short framing.
65
72
  * Takes identity only — resume doesn't need the full file stats
66
73
  * (Claude already has the context from the initial start dispatch). */
package/dist/prompts.js CHANGED
@@ -132,6 +132,17 @@ export function buildNewProjectPrompt(opts) {
132
132
  /** Compact capability reminder — safe to include on every resumed-session message.
133
133
  * Hedges against Claude compacting away the original context block mid-session. */
134
134
  export const PLATFORM_REMINDER = `This project runs on the Gipity platform. All CLI commands and service APIs are documented in CLAUDE.md.`;
135
+ /** Tags that bracket the user's actual message inside a wrap. All agent-facing
136
+ * context and instructions live BEFORE the opening tag; nothing comes after
137
+ * the closing tag. The client-side `stripPreamble` renderer in
138
+ * `platform/client/src/ts/commands/claude-display.ts` looks for the same
139
+ * strings — keep the two copies in sync (there is a drift-guard test). */
140
+ export const USER_MSG_OPEN = '<gipity-user-message>';
141
+ export const USER_MSG_CLOSE = '</gipity-user-message>';
142
+ /** Standing instruction applied to every relay-dispatched message. Placed
143
+ * once, before the user message, so the model doesn't trip over a trailing
144
+ * instruction after it has already read the question. */
145
+ const RESPONSE_DIRECTIVE = `Respond to the user message below. Don't greet or reintroduce yourself.`;
135
146
  /** Resume wrap: compact header + capability reminder + short framing.
136
147
  * Takes identity only — resume doesn't need the full file stats
137
148
  * (Claude already has the context from the initial start dispatch). */
@@ -144,12 +155,24 @@ export function buildResumeWrap(opts, userMsg) {
144
155
  PLATFORM_REMINDER,
145
156
  `Resumed session — scaffold before building (see CLAUDE.md); skip for one-off tasks.`,
146
157
  ``,
147
- `User message: ${userMsg}`,
158
+ RESPONSE_DIRECTIVE,
159
+ ``,
160
+ USER_MSG_OPEN,
161
+ userMsg,
162
+ USER_MSG_CLOSE,
148
163
  ].join('\n');
149
164
  }
150
165
  /** Fresh wrap: full project context + the user's message. */
151
166
  export function buildFreshWrap(contextBlock, userMsg) {
152
- return `${contextBlock}\n\nUser message: ${userMsg}\n\nAnswer directly. Do not greet or reintroduce yourself.`;
167
+ return [
168
+ contextBlock,
169
+ ``,
170
+ RESPONSE_DIRECTIVE,
171
+ ``,
172
+ USER_MSG_OPEN,
173
+ userMsg,
174
+ USER_MSG_CLOSE,
175
+ ].join('\n');
153
176
  }
154
177
  // ---------------------------------------------------------------------------
155
178
  // PreToolUse soft-warning hook (advisory message printed to stderr)