@nexrall/code-core 1.4.76 → 1.4.77

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 (110) hide show
  1. package/dist/agent/goal.d.ts +55 -0
  2. package/dist/agent/goal.d.ts.map +1 -0
  3. package/dist/agent/goal.js +120 -0
  4. package/dist/agent/handoffBrief.d.ts +82 -0
  5. package/dist/agent/handoffBrief.d.ts.map +1 -0
  6. package/dist/agent/handoffBrief.js +121 -0
  7. package/dist/agent/modelCatalogue.d.ts +23 -0
  8. package/dist/agent/modelCatalogue.d.ts.map +1 -1
  9. package/dist/agent/modelCatalogue.js +28 -0
  10. package/dist/agent/outputStyles.d.ts +27 -0
  11. package/dist/agent/outputStyles.d.ts.map +1 -0
  12. package/dist/agent/outputStyles.js +174 -0
  13. package/dist/agent/skills.d.ts.map +1 -1
  14. package/dist/agent/skills.js +7 -0
  15. package/dist/api/billingLines.d.ts +11 -0
  16. package/dist/api/billingLines.d.ts.map +1 -0
  17. package/dist/api/billingLines.js +56 -0
  18. package/dist/api/client.d.ts +2 -0
  19. package/dist/api/client.d.ts.map +1 -1
  20. package/dist/api/scheduleLines.d.ts +53 -0
  21. package/dist/api/scheduleLines.d.ts.map +1 -0
  22. package/dist/api/scheduleLines.js +150 -0
  23. package/dist/context/contextFiles.d.ts +81 -0
  24. package/dist/context/contextFiles.d.ts.map +1 -0
  25. package/dist/context/contextFiles.js +310 -0
  26. package/dist/diff/collect.d.ts +25 -0
  27. package/dist/diff/collect.d.ts.map +1 -0
  28. package/dist/diff/collect.js +169 -0
  29. package/dist/diff/diffView.d.ts +57 -0
  30. package/dist/diff/diffView.d.ts.map +1 -0
  31. package/dist/diff/diffView.js +231 -0
  32. package/dist/diff/reviewQueue.d.ts +53 -0
  33. package/dist/diff/reviewQueue.d.ts.map +1 -0
  34. package/dist/diff/reviewQueue.js +349 -0
  35. package/dist/events/recap.d.ts +54 -0
  36. package/dist/events/recap.d.ts.map +1 -0
  37. package/dist/events/recap.js +161 -0
  38. package/dist/events/sessionEvents.d.ts +54 -0
  39. package/dist/events/sessionEvents.d.ts.map +1 -0
  40. package/dist/events/sessionEvents.js +324 -0
  41. package/dist/events/sessionStats.d.ts +89 -0
  42. package/dist/events/sessionStats.d.ts.map +1 -0
  43. package/dist/events/sessionStats.js +264 -0
  44. package/dist/import/claudeImport.d.ts +44 -0
  45. package/dist/import/claudeImport.d.ts.map +1 -0
  46. package/dist/import/claudeImport.js +337 -0
  47. package/dist/index.d.ts +33 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +33 -0
  50. package/dist/project/projectCommands.d.ts +33 -0
  51. package/dist/project/projectCommands.d.ts.map +1 -0
  52. package/dist/project/projectCommands.js +246 -0
  53. package/dist/search/conversationTurns.d.ts +53 -0
  54. package/dist/search/conversationTurns.d.ts.map +1 -0
  55. package/dist/search/conversationTurns.js +170 -0
  56. package/dist/search/globalSearch.d.ts +144 -0
  57. package/dist/search/globalSearch.d.ts.map +1 -0
  58. package/dist/search/globalSearch.js +350 -0
  59. package/dist/share/sessionChannel.d.ts +136 -0
  60. package/dist/share/sessionChannel.d.ts.map +1 -0
  61. package/dist/share/sessionChannel.js +373 -0
  62. package/dist/share/sessionShare.d.ts +104 -0
  63. package/dist/share/sessionShare.d.ts.map +1 -0
  64. package/dist/share/sessionShare.js +336 -0
  65. package/dist/ui/configCmd.d.ts +48 -0
  66. package/dist/ui/configCmd.d.ts.map +1 -0
  67. package/dist/ui/configCmd.js +146 -0
  68. package/dist/ui/deployPanel.d.ts +91 -0
  69. package/dist/ui/deployPanel.d.ts.map +1 -0
  70. package/dist/ui/deployPanel.js +442 -0
  71. package/dist/ui/mergeAssistant.d.ts +120 -0
  72. package/dist/ui/mergeAssistant.d.ts.map +1 -0
  73. package/dist/ui/mergeAssistant.js +391 -0
  74. package/dist/ui/notify.d.ts +114 -0
  75. package/dist/ui/notify.d.ts.map +1 -0
  76. package/dist/ui/notify.js +235 -0
  77. package/dist/ui/promptSuggest.d.ts +56 -0
  78. package/dist/ui/promptSuggest.d.ts.map +1 -0
  79. package/dist/ui/promptSuggest.js +160 -0
  80. package/dist/ui/taskGraph.d.ts +44 -0
  81. package/dist/ui/taskGraph.d.ts.map +1 -0
  82. package/dist/ui/taskGraph.js +289 -0
  83. package/dist/util/addDir.d.ts +31 -0
  84. package/dist/util/addDir.d.ts.map +1 -0
  85. package/dist/util/addDir.js +124 -0
  86. package/dist/util/batch.d.ts +16 -0
  87. package/dist/util/batch.d.ts.map +1 -0
  88. package/dist/util/batch.js +92 -0
  89. package/dist/util/cellWidth.d.ts +12 -0
  90. package/dist/util/cellWidth.d.ts.map +1 -0
  91. package/dist/util/cellWidth.js +161 -0
  92. package/dist/util/duration.d.ts +8 -0
  93. package/dist/util/duration.d.ts.map +1 -0
  94. package/dist/util/duration.js +50 -0
  95. package/dist/util/loopJobs.d.ts +67 -0
  96. package/dist/util/loopJobs.d.ts.map +1 -0
  97. package/dist/util/loopJobs.js +169 -0
  98. package/dist/util/settingsFile.d.ts +14 -0
  99. package/dist/util/settingsFile.d.ts.map +1 -0
  100. package/dist/util/settingsFile.js +99 -0
  101. package/dist/util/toolLabel.d.ts +2 -0
  102. package/dist/util/toolLabel.d.ts.map +1 -0
  103. package/dist/util/toolLabel.js +17 -0
  104. package/dist/verify/failureTimeline.d.ts +100 -0
  105. package/dist/verify/failureTimeline.d.ts.map +1 -0
  106. package/dist/verify/failureTimeline.js +253 -0
  107. package/dist/verify/verification.d.ts +75 -0
  108. package/dist/verify/verification.d.ts.map +1 -0
  109. package/dist/verify/verification.js +315 -0
  110. package/package.json +5 -4
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+ // Lives in core (moved from the CLI's commands/importClaude.ts, 2026-10-04) so
3
+ // the VS Code panel runs the same plan/apply for /import; the CLI module is a
4
+ // re-export shim.
5
+ // /import — bring a Claude Code setup (`.claude/` and CLAUDE.md) into nex.
6
+ //
7
+ // What carries over unchanged, because nex reads the same shapes:
8
+ // .claude/commands/**/*.md → .nexrall/commands/ (slash commands)
9
+ // .claude/agents/*.md → .nexrall/agents/ (sub-agents; Claude tool names are accepted)
10
+ // .claude/skills/<n>/… → .nexrall/skills/<n>/… (the whole directory: scripts, references)
11
+ // CLAUDE.md → nexrall.md (the project brief)
12
+ // What is merged into settings.json (only keys that exist in both products):
13
+ // permissions.allow/deny/ask, hooks (nested and short hook shapes are both read by nex)
14
+ // What is reported but NOT guessed at: everything else in settings.json (env, model, statusLine,
15
+ // apiKeyHelper, …) — a setting that quietly means something different is worse than a missing one.
16
+ //
17
+ // Rules this file never breaks:
18
+ // • nothing existing is overwritten — a clash is reported as "skipped: exists";
19
+ // • the default is a DRY RUN: it lists what it would do and writes nothing until `--apply`;
20
+ // • it only reads from the source and only writes under .nexrall/ or nexrall.md.
21
+ //
22
+ // Pure of the REPL: takes directories in, returns a plan, applies the plan. chat.ts only prints.
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.planImport = planImport;
58
+ exports.applyImport = applyImport;
59
+ exports.formatPlan = formatPlan;
60
+ const fs = __importStar(require("fs"));
61
+ const path = __importStar(require("path"));
62
+ const isFile = (p) => {
63
+ try {
64
+ return fs.statSync(p).isFile();
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ };
70
+ const isDir = (p) => {
71
+ try {
72
+ return fs.statSync(p).isDirectory();
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ };
78
+ /** Every *.md under dir, as paths relative to dir (commands may be nested: `git/commit.md`). */
79
+ function listMarkdown(dir) {
80
+ const out = [];
81
+ const walk = (d, rel) => {
82
+ let entries;
83
+ try {
84
+ entries = fs.readdirSync(d, { withFileTypes: true });
85
+ }
86
+ catch {
87
+ return;
88
+ }
89
+ for (const e of entries.sort((a, b) => a.name.localeCompare(b.name))) {
90
+ if (e.name.startsWith('.'))
91
+ continue;
92
+ const r = rel ? `${rel}/${e.name}` : e.name;
93
+ if (e.isDirectory())
94
+ walk(path.join(d, e.name), r);
95
+ else if (e.isFile() && /\.md$/i.test(e.name))
96
+ out.push(r);
97
+ }
98
+ };
99
+ walk(dir, '');
100
+ return out;
101
+ }
102
+ function readJson(file) {
103
+ if (!isFile(file))
104
+ return null;
105
+ try {
106
+ const v = JSON.parse(fs.readFileSync(file, 'utf8'));
107
+ if (v && typeof v === 'object' && !Array.isArray(v))
108
+ return { ok: true, value: v };
109
+ return { ok: false, error: 'not a JSON object' };
110
+ }
111
+ catch (e) {
112
+ return { ok: false, error: e.message };
113
+ }
114
+ }
115
+ /** The keys of a Claude settings.json that carry over; everything else is only reported. */
116
+ const IMPORTED_SETTING_KEYS = new Set(['permissions', 'hooks']);
117
+ function planImport(r) {
118
+ const items = [];
119
+ const src = path.join(r.sourceBase, '.claude');
120
+ const dst = path.join(r.destBase, '.nexrall');
121
+ // commands
122
+ for (const rel of listMarkdown(path.join(src, 'commands'))) {
123
+ const to = path.join(dst, 'commands', ...rel.split('/'));
124
+ items.push({
125
+ kind: 'command',
126
+ from: path.join(src, 'commands', ...rel.split('/')),
127
+ to,
128
+ status: fs.existsSync(to) ? 'skip-exists' : 'copy',
129
+ });
130
+ }
131
+ // agents (flat)
132
+ for (const rel of listMarkdown(path.join(src, 'agents')).filter((x) => !x.includes('/'))) {
133
+ const to = path.join(dst, 'agents', rel);
134
+ items.push({
135
+ kind: 'agent',
136
+ from: path.join(src, 'agents', rel),
137
+ to,
138
+ status: fs.existsSync(to) ? 'skip-exists' : 'copy',
139
+ });
140
+ }
141
+ // skills: one directory each, only if it has a SKILL.md
142
+ const skillsDir = path.join(src, 'skills');
143
+ if (isDir(skillsDir)) {
144
+ for (const name of fs.readdirSync(skillsDir).sort()) {
145
+ const d = path.join(skillsDir, name);
146
+ if (name.startsWith('.') || !isDir(d) || !isFile(path.join(d, 'SKILL.md')))
147
+ continue;
148
+ const to = path.join(dst, 'skills', name);
149
+ items.push({ kind: 'skill', from: d, to, status: fs.existsSync(to) ? 'skip-exists' : 'copy' });
150
+ }
151
+ }
152
+ // brief (project scope only)
153
+ if (r.scope === 'project') {
154
+ const claudeMd = path.join(r.sourceBase, 'CLAUDE.md');
155
+ if (isFile(claudeMd)) {
156
+ const to = path.join(r.destBase, 'nexrall.md');
157
+ const anyBrief = ['nexrall.md', 'NEXRALL.md', path.join('.nexrall', 'instructions.md')].some((c) => isFile(path.join(r.destBase, c)));
158
+ items.push({ kind: 'brief', from: claudeMd, to, status: anyBrief ? 'skip-exists' : 'copy' });
159
+ }
160
+ }
161
+ // settings: permissions + hooks
162
+ const ignored = [];
163
+ const settingsFiles = r.scope === 'project' ? ['settings.json'] : ['settings.json'];
164
+ for (const f of settingsFiles) {
165
+ const j = readJson(path.join(src, f));
166
+ if (!j)
167
+ continue;
168
+ if (!j.ok) {
169
+ items.push({
170
+ kind: 'permissions',
171
+ from: path.join(src, f),
172
+ to: path.join(dst, 'settings.json'),
173
+ status: 'skip-empty',
174
+ note: `unreadable: ${j.error}`,
175
+ });
176
+ continue;
177
+ }
178
+ const perms = j.value.permissions;
179
+ if (perms && typeof perms === 'object') {
180
+ const p = perms;
181
+ const n = ['allow', 'deny', 'ask'].reduce((a, k) => a + (Array.isArray(p[k]) ? p[k].length : 0), 0);
182
+ if (n > 0)
183
+ items.push({
184
+ kind: 'permissions',
185
+ from: path.join(src, f),
186
+ to: path.join(dst, 'settings.json'),
187
+ status: 'merge',
188
+ note: `${n} permission rule${n === 1 ? '' : 's'}`,
189
+ });
190
+ }
191
+ const hooks = j.value.hooks;
192
+ if (hooks && typeof hooks === 'object' && Object.keys(hooks).length > 0) {
193
+ items.push({
194
+ kind: 'hooks',
195
+ from: path.join(src, f),
196
+ to: path.join(dst, 'settings.json'),
197
+ status: 'merge',
198
+ note: `${Object.keys(hooks).length} hook event${Object.keys(hooks).length === 1 ? '' : 's'}`,
199
+ });
200
+ }
201
+ for (const k of Object.keys(j.value))
202
+ if (!IMPORTED_SETTING_KEYS.has(k) && !ignored.includes(k))
203
+ ignored.push(k);
204
+ }
205
+ return { items, ignoredSettings: ignored.sort(), empty: items.length === 0 && ignored.length === 0 };
206
+ }
207
+ function copyDir(from, to) {
208
+ fs.mkdirSync(to, { recursive: true });
209
+ for (const e of fs.readdirSync(from, { withFileTypes: true })) {
210
+ const a = path.join(from, e.name);
211
+ const b = path.join(to, e.name);
212
+ if (e.isDirectory())
213
+ copyDir(a, b);
214
+ else if (e.isFile())
215
+ fs.copyFileSync(a, b, fs.constants.COPYFILE_EXCL);
216
+ // symlinks and other special files are not followed: a link could point outside the project.
217
+ }
218
+ }
219
+ /** Merge rule arrays without duplicates, keeping what is already there first. */
220
+ function unionArr(a, b) {
221
+ const out = Array.isArray(a) ? [...a] : [];
222
+ for (const x of Array.isArray(b) ? b : [])
223
+ if (!out.some((y) => JSON.stringify(y) === JSON.stringify(x)))
224
+ out.push(x);
225
+ return out;
226
+ }
227
+ /**
228
+ * Carry out a plan. Idempotent: a second run finds everything already present and does nothing.
229
+ * Settings are merged additively — existing rules and hooks are kept, new ones appended.
230
+ */
231
+ function applyImport(plan) {
232
+ const done = [];
233
+ const failed = [];
234
+ let settingsTo = null;
235
+ let settingsFrom = null;
236
+ for (const item of plan.items) {
237
+ try {
238
+ if (item.status === 'copy') {
239
+ fs.mkdirSync(path.dirname(item.to), { recursive: true });
240
+ if (item.kind === 'skill')
241
+ copyDir(item.from, item.to);
242
+ else
243
+ fs.copyFileSync(item.from, item.to, fs.constants.COPYFILE_EXCL);
244
+ done.push(item);
245
+ }
246
+ else if (item.status === 'merge') {
247
+ settingsTo = item.to;
248
+ settingsFrom = item.from; // one merge covers permissions + hooks
249
+ done.push(item);
250
+ }
251
+ }
252
+ catch (e) {
253
+ failed.push({ item, error: e.message });
254
+ }
255
+ }
256
+ if (settingsTo && settingsFrom) {
257
+ try {
258
+ const incoming = readJson(settingsFrom);
259
+ if (incoming && incoming.ok) {
260
+ const cur = readJson(settingsTo);
261
+ if (cur && !cur.ok)
262
+ throw new Error(`${settingsTo} exists but is not valid JSON (${cur.error}) — not touching it`);
263
+ const next = cur && cur.ok ? { ...cur.value } : {};
264
+ const wantsPerms = plan.items.some((i) => i.kind === 'permissions' && i.status === 'merge');
265
+ const wantsHooks = plan.items.some((i) => i.kind === 'hooks' && i.status === 'merge');
266
+ if (wantsPerms && incoming.value.permissions && typeof incoming.value.permissions === 'object') {
267
+ const inP = incoming.value.permissions;
268
+ const curP = (next.permissions && typeof next.permissions === 'object' ? next.permissions : {});
269
+ const merged = { ...curP };
270
+ for (const k of ['allow', 'deny', 'ask'])
271
+ if (Array.isArray(inP[k]))
272
+ merged[k] = unionArr(curP[k], inP[k]);
273
+ next.permissions = merged;
274
+ }
275
+ if (wantsHooks && incoming.value.hooks && typeof incoming.value.hooks === 'object') {
276
+ const inH = incoming.value.hooks;
277
+ const curH = (next.hooks && typeof next.hooks === 'object' ? next.hooks : {});
278
+ const merged = { ...curH };
279
+ for (const ev of Object.keys(inH))
280
+ merged[ev] = unionArr(curH[ev], inH[ev]);
281
+ next.hooks = merged;
282
+ }
283
+ fs.mkdirSync(path.dirname(settingsTo), { recursive: true });
284
+ const tmp = `${settingsTo}.${process.pid}.tmp`;
285
+ fs.writeFileSync(tmp, JSON.stringify(next, null, 2) + '\n', 'utf8');
286
+ fs.renameSync(tmp, settingsTo);
287
+ }
288
+ }
289
+ catch (e) {
290
+ // The merge failed as a unit: report every settings item as failed, not as done.
291
+ for (let i = done.length - 1; i >= 0; i--) {
292
+ const d = done[i];
293
+ if (d.status === 'merge') {
294
+ done.splice(i, 1);
295
+ failed.push({ item: d, error: e.message });
296
+ }
297
+ }
298
+ }
299
+ }
300
+ return { done, failed };
301
+ }
302
+ const KIND_LABEL = {
303
+ command: 'command',
304
+ agent: 'agent',
305
+ skill: 'skill',
306
+ brief: 'brief',
307
+ permissions: 'permissions',
308
+ hooks: 'hooks',
309
+ };
310
+ function formatPlan(plan, apply, base) {
311
+ const rel = (p) => p.startsWith(base) ? path.relative(base, p) || '.' : p.replace(process.env.HOME ?? '\u0000', '~');
312
+ if (plan.empty)
313
+ return ['Nothing to import: no .claude/ commands, agents, skills or settings, and no CLAUDE.md here.'];
314
+ const lines = [apply ? 'Imported:' : 'Would import (dry run — nothing written):', ''];
315
+ const verb = (s) => s === 'copy'
316
+ ? apply
317
+ ? 'copied '
318
+ : 'copy '
319
+ : s === 'merge'
320
+ ? apply
321
+ ? 'merged '
322
+ : 'merge '
323
+ : s === 'skip-exists'
324
+ ? 'skip '
325
+ : 'skip ';
326
+ for (const i of plan.items) {
327
+ const tail = i.status === 'skip-exists' ? ' (already exists — kept yours)' : i.note ? ` (${i.note})` : '';
328
+ lines.push(` ${verb(i.status)}${KIND_LABEL[i.kind].padEnd(11)} ${rel(i.from)} → ${rel(i.to)}${tail}`);
329
+ }
330
+ if (plan.ignoredSettings.length) {
331
+ lines.push('', `Not imported (no equivalent, or it would mean something different here): ${plan.ignoredSettings.join(', ')}`);
332
+ }
333
+ if (!apply && plan.items.some((i) => i.status === 'copy' || i.status === 'merge'))
334
+ lines.push('', 'Run /import --apply to do it.');
335
+ return lines;
336
+ }
337
+ //# sourceMappingURL=claudeImport.js.map
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './types';
2
2
  export * from './util/safeSlice';
3
+ export * from './util/cellWidth';
3
4
  export * from './auth/index';
4
5
  export * from './api/client';
5
6
  export * from './tools/executor';
@@ -15,6 +16,7 @@ export * from './agent/claimEvidence';
15
16
  export * from './agent/audit';
16
17
  export * from './agent/memory';
17
18
  export * from './agent/skills';
19
+ export * from './agent/outputStyles';
18
20
  export * from './agent/nestedInstructions';
19
21
  export * from './mcp/client';
20
22
  export * from './mcp/httpClient';
@@ -47,4 +49,35 @@ export * from './agent/taskEvents';
47
49
  export * from './agent/peerRegistry';
48
50
  export * from './agent/peerTransport';
49
51
  export * from './agent/askOnce';
52
+ export * from './util/settingsFile';
53
+ export * from './diff/diffView';
54
+ export * from './diff/reviewQueue';
55
+ export * from './diff/collect';
56
+ export * from './project/projectCommands';
57
+ export * from './verify/failureTimeline';
58
+ export * from './verify/verification';
59
+ export * from './util/duration';
60
+ export * from './context/contextFiles';
61
+ export * from './events/sessionEvents';
62
+ export * from './events/recap';
63
+ export * from './events/sessionStats';
64
+ export * from './ui/notify';
65
+ export * from './import/claudeImport';
66
+ export * from './ui/configCmd';
67
+ export * from './util/addDir';
68
+ export * from './util/toolLabel';
69
+ export * from './search/conversationTurns';
70
+ export * from './search/globalSearch';
71
+ export * from './util/loopJobs';
72
+ export * from './agent/goal';
73
+ export * from './api/scheduleLines';
74
+ export * from './agent/handoffBrief';
75
+ export * from './api/billingLines';
76
+ export * from './util/batch';
77
+ export * from './ui/taskGraph';
78
+ export * from './ui/deployPanel';
79
+ export * from './share/sessionShare';
80
+ export * from './share/sessionChannel';
81
+ export * from './ui/mergeAssistant';
82
+ export * from './ui/promptSuggest';
50
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./util/safeSlice"), exports);
19
+ __exportStar(require("./util/cellWidth"), exports);
19
20
  __exportStar(require("./auth/index"), exports);
20
21
  __exportStar(require("./api/client"), exports);
21
22
  __exportStar(require("./tools/executor"), exports);
@@ -31,6 +32,7 @@ __exportStar(require("./agent/claimEvidence"), exports);
31
32
  __exportStar(require("./agent/audit"), exports);
32
33
  __exportStar(require("./agent/memory"), exports);
33
34
  __exportStar(require("./agent/skills"), exports);
35
+ __exportStar(require("./agent/outputStyles"), exports);
34
36
  __exportStar(require("./agent/nestedInstructions"), exports);
35
37
  __exportStar(require("./mcp/client"), exports);
36
38
  __exportStar(require("./mcp/httpClient"), exports);
@@ -63,4 +65,35 @@ __exportStar(require("./agent/taskEvents"), exports);
63
65
  __exportStar(require("./agent/peerRegistry"), exports);
64
66
  __exportStar(require("./agent/peerTransport"), exports);
65
67
  __exportStar(require("./agent/askOnce"), exports);
68
+ __exportStar(require("./util/settingsFile"), exports);
69
+ __exportStar(require("./diff/diffView"), exports);
70
+ __exportStar(require("./diff/reviewQueue"), exports);
71
+ __exportStar(require("./diff/collect"), exports);
72
+ __exportStar(require("./project/projectCommands"), exports);
73
+ __exportStar(require("./verify/failureTimeline"), exports);
74
+ __exportStar(require("./verify/verification"), exports);
75
+ __exportStar(require("./util/duration"), exports);
76
+ __exportStar(require("./context/contextFiles"), exports);
77
+ __exportStar(require("./events/sessionEvents"), exports);
78
+ __exportStar(require("./events/recap"), exports);
79
+ __exportStar(require("./events/sessionStats"), exports);
80
+ __exportStar(require("./ui/notify"), exports);
81
+ __exportStar(require("./import/claudeImport"), exports);
82
+ __exportStar(require("./ui/configCmd"), exports);
83
+ __exportStar(require("./util/addDir"), exports);
84
+ __exportStar(require("./util/toolLabel"), exports);
85
+ __exportStar(require("./search/conversationTurns"), exports);
86
+ __exportStar(require("./search/globalSearch"), exports);
87
+ __exportStar(require("./util/loopJobs"), exports);
88
+ __exportStar(require("./agent/goal"), exports);
89
+ __exportStar(require("./api/scheduleLines"), exports);
90
+ __exportStar(require("./agent/handoffBrief"), exports);
91
+ __exportStar(require("./api/billingLines"), exports);
92
+ __exportStar(require("./util/batch"), exports);
93
+ __exportStar(require("./ui/taskGraph"), exports);
94
+ __exportStar(require("./ui/deployPanel"), exports);
95
+ __exportStar(require("./share/sessionShare"), exports);
96
+ __exportStar(require("./share/sessionChannel"), exports);
97
+ __exportStar(require("./ui/mergeAssistant"), exports);
98
+ __exportStar(require("./ui/promptSuggest"), exports);
66
99
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,33 @@
1
+ export interface ProjectCommand {
2
+ /** What the user types after `/run`: an npm script name, a make target, … */
3
+ name: string;
4
+ /** The full shell command. */
5
+ command: string;
6
+ /** The file it came from, shown in the picker and in errors. */
7
+ source: string;
8
+ }
9
+ /** The package manager whose scripts this project's lockfile asks for. */
10
+ export declare function packageManager(workDir: string): 'npm' | 'pnpm' | 'yarn' | 'bun';
11
+ /**
12
+ * Every command this folder can run, in a stable order (package.json first — the most
13
+ * common source — then the rest alphabetically). Missing files are simply absent: a
14
+ * project with no package.json is not an error, it is a Cargo project.
15
+ */
16
+ export declare function detectProjectCommands(workDir: string): ProjectCommand[];
17
+ /**
18
+ * The commands a shortcut should run: everything in the best tier it finds, best
19
+ * first. More than one means the caller asks which (a repo with `test` and
20
+ * `test:integration` should not silently pick one — running the wrong suite and
21
+ * calling it "the tests" is worse than one extra keystroke).
22
+ */
23
+ export declare function resolveShortcut<T extends {
24
+ name: string;
25
+ }>(cmds: T[], want: string): T[];
26
+ /**
27
+ * Runs `git` with the user's arguments: `/git` alone means `git status`, `/git log -5`
28
+ * means exactly that. Not a list of allowed subcommands — the read-only gate in front
29
+ * of this (core's isReadOnlyBash) is what decides whether it may run unprompted, so
30
+ * `/git commit` works in a normal session and is refused under `--readonly`.
31
+ */
32
+ export declare function gitCommand(arg: string): string;
33
+ //# sourceMappingURL=projectCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectCommands.d.ts","sourceRoot":"","sources":["../../src/project/projectCommands.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAkCD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAM/E;AAsED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAiEvE;AAsBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}