document360-writer 0.2.1 → 0.3.1

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 (83) hide show
  1. package/dist/cli.js +83 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/allowProd.d.ts +3 -0
  4. package/dist/commands/allowProd.js +18 -0
  5. package/dist/commands/allowProd.js.map +1 -0
  6. package/dist/commands/clear.js +1 -1
  7. package/dist/commands/clear.js.map +1 -1
  8. package/dist/commands/help.js +3 -0
  9. package/dist/commands/help.js.map +1 -1
  10. package/dist/commands/index.d.ts +2 -0
  11. package/dist/commands/index.js +6 -0
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/commands/init.js +15 -17
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/mcp.js +1 -1
  16. package/dist/commands/mcp.js.map +1 -1
  17. package/dist/commands/profile.d.ts +3 -0
  18. package/dist/commands/profile.js +16 -0
  19. package/dist/commands/profile.js.map +1 -0
  20. package/dist/commands/rename.js +1 -1
  21. package/dist/commands/rename.js.map +1 -1
  22. package/dist/commands/resume.js +1 -1
  23. package/dist/commands/resume.js.map +1 -1
  24. package/dist/commands/workspace.d.ts +3 -0
  25. package/dist/commands/workspace.js +8 -0
  26. package/dist/commands/workspace.js.map +1 -0
  27. package/dist/d360/authCli.d.ts +10 -0
  28. package/dist/d360/authCli.js +106 -0
  29. package/dist/d360/authCli.js.map +1 -0
  30. package/dist/d360/profileCli.d.ts +3 -0
  31. package/dist/d360/profileCli.js +54 -0
  32. package/dist/d360/profileCli.js.map +1 -0
  33. package/dist/d360/workspaceCli.d.ts +15 -0
  34. package/dist/d360/workspaceCli.js +72 -0
  35. package/dist/d360/workspaceCli.js.map +1 -0
  36. package/dist/oneShot.d.ts +2 -2
  37. package/dist/oneShot.js +59 -59
  38. package/dist/oneShot.js.map +1 -1
  39. package/dist/repl.d.ts +2 -2
  40. package/dist/repl.js +72 -82
  41. package/dist/repl.js.map +1 -1
  42. package/dist/tui/App.d.ts +9 -0
  43. package/dist/tui/App.js +439 -0
  44. package/dist/tui/App.js.map +1 -0
  45. package/dist/tui/catalog.d.ts +8 -0
  46. package/dist/tui/catalog.js +21 -0
  47. package/dist/tui/catalog.js.map +1 -0
  48. package/dist/tui/index.d.ts +3 -0
  49. package/dist/tui/index.js +24 -0
  50. package/dist/tui/index.js.map +1 -0
  51. package/dist/tui/markdown.d.ts +4 -0
  52. package/dist/tui/markdown.js +139 -0
  53. package/dist/tui/markdown.js.map +1 -0
  54. package/package.json +8 -5
  55. package/dist/agent.d.ts +0 -6
  56. package/dist/agent.js +0 -94
  57. package/dist/agent.js.map +0 -1
  58. package/dist/config.d.ts +0 -40
  59. package/dist/config.js +0 -42
  60. package/dist/config.js.map +0 -1
  61. package/dist/lib/auth.d.ts +0 -14
  62. package/dist/lib/auth.js +0 -25
  63. package/dist/lib/auth.js.map +0 -1
  64. package/dist/lib/messageQueue.d.ts +0 -9
  65. package/dist/lib/messageQueue.js +0 -40
  66. package/dist/lib/messageQueue.js.map +0 -1
  67. package/dist/lib/paths.d.ts +0 -9
  68. package/dist/lib/paths.js +0 -35
  69. package/dist/lib/paths.js.map +0 -1
  70. package/dist/lib/sessionStore.d.ts +0 -24
  71. package/dist/lib/sessionStore.js +0 -100
  72. package/dist/lib/sessionStore.js.map +0 -1
  73. package/dist/lib/titleGen.d.ts +0 -7
  74. package/dist/lib/titleGen.js +0 -64
  75. package/dist/lib/titleGen.js.map +0 -1
  76. package/skills/CLAUDE.md +0 -92
  77. package/skills/analyze-codebase/SKILL.md +0 -35
  78. package/skills/audit-docs/SKILL.md +0 -48
  79. package/skills/emit-screenshot-spec/SKILL.md +0 -82
  80. package/skills/gather-context-from-mcp/SKILL.md +0 -29
  81. package/skills/propose-structure/SKILL.md +0 -51
  82. package/skills/publish-to-d360/SKILL.md +0 -39
  83. package/skills/write-article/SKILL.md +0 -95
@@ -0,0 +1,54 @@
1
+ import { readProjectConfig, writeProjectConfig, resolveActiveProfile, loadTokens, isExpired } from 'document360-engine';
2
+ import { accent, dim, error, ok, warn } from '../lib/colors.js';
3
+ export function runProfileList(cwd) {
4
+ const cfg = readProjectConfig(cwd);
5
+ if (!cfg?.profiles || Object.keys(cfg.profiles).length === 0) {
6
+ console.log(error('No profiles in .d360-writer.json. Run: d360-writer init'));
7
+ process.exitCode = 1;
8
+ return;
9
+ }
10
+ console.log('');
11
+ for (const [name, profile] of Object.entries(cfg.profiles)) {
12
+ const active = name === cfg.defaultProfile ? accent('● ') : ' ';
13
+ const prod = profile.production ? warn(' ⚠ PRODUCTION') : '';
14
+ const envName = profile.connection.environment ?? '(inline)';
15
+ const tokens = loadTokens(name);
16
+ const auth = !tokens ? dim('not logged in') : isExpired(tokens) && !tokens.refreshToken ? warn('expired') : dim('logged in');
17
+ console.log(`${active}${accent(name)} → ${envName}${prod} [${auth}]`);
18
+ }
19
+ console.log('');
20
+ console.log(dim('● = default. Switch with: d360-writer profile use <name>'));
21
+ console.log('');
22
+ }
23
+ export function runProfileUse(cwd, name) {
24
+ const cfg = readProjectConfig(cwd);
25
+ if (!cfg?.profiles?.[name]) {
26
+ const avail = cfg?.profiles ? Object.keys(cfg.profiles).join(', ') : '(none — run init)';
27
+ console.log(error(`Unknown profile "${name}". Available: ${avail}`));
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ cfg.defaultProfile = name;
32
+ writeProjectConfig(cfg, cwd);
33
+ const prod = cfg.profiles[name].production ? warn(' ⚠ PRODUCTION') : '';
34
+ console.log(ok(`✓ Default profile is now "${name}"${prod}`));
35
+ }
36
+ export function runProfileShow(cwd, name) {
37
+ try {
38
+ const active = resolveActiveProfile(cwd, name);
39
+ console.log('');
40
+ console.log(`Profile ${accent(active.name)}${active.production ? warn(' ⚠ PRODUCTION') : ''}`);
41
+ console.log(dim(` api: ${active.connection.apiUrl}`));
42
+ console.log(dim(` identity: ${active.connection.authorizationUrl}`));
43
+ console.log(dim(` clientId: ${active.connection.clientId}`));
44
+ console.log(dim(` scopes: ${active.connection.scopes.join(' ')}`));
45
+ console.log(dim(` project: ${active.project.projectId ?? '(set at login)'}`));
46
+ console.log(dim(` workspace:${active.project.workspaceId ? ' ' + active.project.workspaceId : ' (none)'}`));
47
+ console.log('');
48
+ }
49
+ catch (e) {
50
+ console.log(error(e.message));
51
+ process.exitCode = 1;
52
+ }
53
+ }
54
+ //# sourceMappingURL=profileCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileCli.js","sourceRoot":"","sources":["../../src/d360/profileCli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type D360Workspace } from 'document360-engine';
2
+ /** Fetch workspaces for the active profile's project. Throws on auth/API errors. */
3
+ export declare function fetchWorkspaces(cwd: string, profileName?: string): Promise<{
4
+ workspaces: D360Workspace[];
5
+ projectId: string;
6
+ profile: string;
7
+ current?: string;
8
+ }>;
9
+ /** Match a workspace by exact name, name-prefix, or id-prefix (for `/workspace <name>`). */
10
+ export declare function matchWorkspace(workspaces: D360Workspace[], query: string): D360Workspace | undefined;
11
+ export declare function setWorkspace(cwd: string, profileName: string, projectId: string, workspaceId: string): void;
12
+ /** Non-interactive set-by-name (scriptable): `d360-writer workspace use <name>`. */
13
+ export declare function runWorkspaceUse(cwd: string, query: string, profileName?: string): Promise<number>;
14
+ /** CLI / login path: list workspaces and prompt (interactive TTY). Persists the choice. */
15
+ export declare function runWorkspacePicker(cwd: string, profileName?: string): Promise<void>;
@@ -0,0 +1,72 @@
1
+ import { select } from '@inquirer/prompts';
2
+ import { resolveActiveProfile, setProfileProject, resolveProjectId, listWorkspaces, } from 'document360-engine';
3
+ import { accent, dim, error, ok } from '../lib/colors.js';
4
+ /** Fetch workspaces for the active profile's project. Throws on auth/API errors. */
5
+ export async function fetchWorkspaces(cwd, profileName) {
6
+ const active = resolveActiveProfile(cwd, profileName);
7
+ const ctx = { profile: active.name, connection: active.connection };
8
+ const projectId = active.project.projectId ?? resolveProjectId(ctx);
9
+ const workspaces = await listWorkspaces(ctx, projectId);
10
+ return { workspaces, projectId, profile: active.name, current: active.project.workspaceId };
11
+ }
12
+ const label = (w) => `${w.name ?? w.id}${w.workspace_type ? ` · ${w.workspace_type}` : ''}`;
13
+ /** Match a workspace by exact name, name-prefix, or id-prefix (for `/workspace <name>`). */
14
+ export function matchWorkspace(workspaces, query) {
15
+ const q = query.toLowerCase();
16
+ return (workspaces.find(w => (w.name ?? '').toLowerCase() === q) ??
17
+ workspaces.find(w => (w.name ?? '').toLowerCase().startsWith(q)) ??
18
+ workspaces.find(w => w.id.startsWith(query)));
19
+ }
20
+ export function setWorkspace(cwd, profileName, projectId, workspaceId) {
21
+ setProfileProject(cwd, profileName, { projectId, workspaceId });
22
+ }
23
+ /** Non-interactive set-by-name (scriptable): `d360-writer workspace use <name>`. */
24
+ export async function runWorkspaceUse(cwd, query, profileName) {
25
+ let data;
26
+ try {
27
+ data = await fetchWorkspaces(cwd, profileName);
28
+ }
29
+ catch (e) {
30
+ console.log(error(`Could not list workspaces: ${e.message}`));
31
+ return 1;
32
+ }
33
+ const w = matchWorkspace(data.workspaces, query);
34
+ if (!w) {
35
+ console.log(error(`No workspace matches "${query}". Available: ${data.workspaces.map(x => x.name ?? x.id).join(', ')}`));
36
+ return 1;
37
+ }
38
+ setWorkspace(cwd, data.profile, data.projectId, w.id);
39
+ console.log(ok(`✓ Workspace set to "${w.name ?? w.id}" for profile "${data.profile}".`));
40
+ return 0;
41
+ }
42
+ /** CLI / login path: list workspaces and prompt (interactive TTY). Persists the choice. */
43
+ export async function runWorkspacePicker(cwd, profileName) {
44
+ let data;
45
+ try {
46
+ data = await fetchWorkspaces(cwd, profileName);
47
+ }
48
+ catch (e) {
49
+ console.log(error(`Could not list workspaces: ${e.message}`));
50
+ return;
51
+ }
52
+ const { workspaces, projectId, profile, current } = data;
53
+ if (workspaces.length === 0) {
54
+ console.log(dim('No workspaces found in this project.'));
55
+ return;
56
+ }
57
+ if (!process.stdin.isTTY) {
58
+ console.log('');
59
+ for (const w of workspaces)
60
+ console.log(` ${w.id === current ? accent('●') : ' '} ${label(w)} ${dim(w.id)}`);
61
+ console.log(dim('Run: d360-writer workspace use <name>'));
62
+ return;
63
+ }
64
+ const choice = await select({
65
+ message: 'Select the Document360 workspace for this repo:',
66
+ choices: workspaces.map(w => ({ name: `${label(w)}${w.id === current ? ' (current)' : ''}`, value: w.id })),
67
+ });
68
+ setWorkspace(cwd, profile, projectId, choice);
69
+ const picked = workspaces.find(w => w.id === choice);
70
+ console.log(ok(`✓ Workspace set to "${picked?.name ?? choice}" for profile "${profile}".`));
71
+ }
72
+ //# sourceMappingURL=workspaceCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceCli.js","sourceRoot":"","sources":["../../src/d360/workspaceCli.ts"],"names":[],"mappings":"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"}
package/dist/oneShot.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { type AuthMode } from './lib/auth.js';
1
+ import { type AuthMode } from 'document360-engine';
2
2
  /**
3
3
  * Headless one-shot mode (`d360-writer --prompt "..."`), the writer's `claude -p`.
4
4
  * Answer text streams to STDOUT (pipeable); banner, auth notice, tool indicators,
5
5
  * and token counts go to STDERR. Exit codes: 0 success, 1 agent error, 2 usage.
6
6
  */
7
- export declare function runOnce(cwd: string, prompt: string, authMode: AuthMode, resumeName?: string): Promise<never>;
7
+ export declare function runOnce(cwd: string, prompt: string, authMode: AuthMode, resumeName?: string, profileName?: string, yes?: boolean): Promise<never>;
package/dist/oneShot.js CHANGED
@@ -1,13 +1,11 @@
1
- import { startAgent } from './agent.js';
2
- import { resolveAuth } from './lib/auth.js';
3
- import { findByName, slugify, touchSession, upsertSession } from './lib/sessionStore.js';
4
- import { accent, dim, error, muted } from './lib/colors.js';
1
+ import { createSession, resolveAuth, findByName, slugify, touchSession, upsertSession, resolveActiveProfile, } from 'document360-engine';
2
+ import { accent, dim, error, muted, warn } from './lib/colors.js';
5
3
  /**
6
4
  * Headless one-shot mode (`d360-writer --prompt "..."`), the writer's `claude -p`.
7
5
  * Answer text streams to STDOUT (pipeable); banner, auth notice, tool indicators,
8
6
  * and token counts go to STDERR. Exit codes: 0 success, 1 agent error, 2 usage.
9
7
  */
10
- export async function runOnce(cwd, prompt, authMode, resumeName) {
8
+ export async function runOnce(cwd, prompt, authMode, resumeName, profileName, yes) {
11
9
  const auth = resolveAuth(authMode);
12
10
  if (auth.kind === 'none') {
13
11
  console.error('');
@@ -19,6 +17,25 @@ export async function runOnce(cwd, prompt, authMode, resumeName) {
19
17
  if (auth.kind === 'subscription') {
20
18
  console.error(dim('Using your Claude subscription (no API key set).'));
21
19
  }
20
+ // Production-profile guard: headless mode has no interactive confirm, so writes to a
21
+ // production profile require --yes. A config that EXISTS but is invalid must fail loud
22
+ // here — never silently skip the guard (a broken prod profile must not slip through).
23
+ let active = null;
24
+ try {
25
+ active = resolveActiveProfile(cwd, profileName);
26
+ }
27
+ catch (e) {
28
+ console.error(error(`Document360 profile error: ${e.message}`));
29
+ process.exit(2);
30
+ }
31
+ if (active.production) {
32
+ console.error(warn(`⚠ Profile "${active.name}" is PRODUCTION.`));
33
+ if (!yes) {
34
+ console.error(error('Refusing to run against a production profile without --yes.'));
35
+ process.exit(2);
36
+ }
37
+ console.error(dim(' --yes given — proceeding against production.'));
38
+ }
22
39
  let resumeUuid;
23
40
  if (resumeName) {
24
41
  const rec = findByName(cwd, resumeName);
@@ -30,62 +47,45 @@ export async function runOnce(cwd, prompt, authMode, resumeName) {
30
47
  resumeUuid = rec.uuid;
31
48
  console.error(dim(`Resuming "${rec.name}"`));
32
49
  }
33
- const session = startAgent(cwd, resumeUuid);
34
- session.queue.push(prompt);
35
- session.queue.close(); // single prompt the engine exits after its result
50
+ // On a production profile we only reach here with --yes (gated above), so writes
51
+ // are authorized; non-production profiles always allow writes.
52
+ const session = createSession({ cwd, resume: resumeUuid, profileName, allowProdWrites: yes === true });
36
53
  let uuid = resumeUuid ?? null;
37
54
  let exitCode = 1;
38
- while (true) {
39
- let next;
40
- try {
41
- next = await session.iterator.next();
42
- }
43
- catch (err) {
44
- console.error('');
45
- console.error(error(`agent error: ${err.message}`));
46
- process.exit(1);
47
- }
48
- if (next.done)
49
- break;
50
- const msg = next.value;
51
- if (msg?.session_id && !uuid) {
52
- uuid = msg.session_id;
53
- const now = new Date().toISOString();
54
- upsertSession({
55
- uuid,
56
- name: slugify(prompt),
57
- renamed: false,
58
- titled: false, // one-shots skip LLM titling — nothing should delay exit
59
- cwd,
60
- firstPrompt: prompt,
61
- createdAt: now,
62
- updatedAt: now,
63
- });
64
- }
65
- if (msg.type === 'stream_event') {
66
- const event = msg.event;
67
- if (event?.delta && typeof event.delta.text === 'string') {
68
- process.stdout.write(event.delta.text);
69
- }
70
- continue;
71
- }
72
- if (msg.type === 'assistant') {
73
- const message = msg.message;
74
- for (const block of message?.content ?? []) {
75
- const b = block;
76
- if (b.type === 'tool_use')
77
- console.error(muted(` ⚙ ${b.name ?? 'tool'}`));
78
- }
79
- continue;
80
- }
81
- if (msg.type === 'result') {
82
- exitCode = msg.subtype === 'success' ? 0 : 1;
83
- const usage = msg.usage;
84
- if (usage)
85
- console.error(dim(`(${usage.input_tokens ?? 0}→${usage.output_tokens ?? 0} tokens)`));
86
- if (exitCode !== 0)
87
- console.error(error(`agent finished with: ${msg.subtype}`));
88
- break;
55
+ for await (const ev of session.send(prompt)) {
56
+ switch (ev.type) {
57
+ case 'session':
58
+ if (!uuid) {
59
+ uuid = ev.sessionId;
60
+ const now = new Date().toISOString();
61
+ upsertSession({
62
+ uuid,
63
+ name: slugify(prompt),
64
+ renamed: false,
65
+ titled: false, // one-shots skip LLM titling — nothing should delay exit
66
+ cwd,
67
+ firstPrompt: prompt,
68
+ createdAt: now,
69
+ updatedAt: now,
70
+ });
71
+ }
72
+ break;
73
+ case 'text':
74
+ process.stdout.write(ev.delta);
75
+ break;
76
+ case 'tool':
77
+ console.error(muted(` ⚙ ${ev.name}`));
78
+ break;
79
+ case 'result':
80
+ exitCode = ev.ok ? 0 : 1;
81
+ console.error(dim(`(${ev.inputTokens}→${ev.outputTokens} tokens)`));
82
+ if (!ev.ok)
83
+ console.error(error('agent finished with an error result'));
84
+ break;
85
+ case 'error':
86
+ console.error('');
87
+ console.error(error(`agent error: ${ev.message}`));
88
+ process.exit(1);
89
89
  }
90
90
  }
91
91
  if (uuid)
@@ -1 +1 @@
1
- {"version":3,"file":"oneShot.js","sourceRoot":"","sources":["../src/oneShot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oneShot.js","sourceRoot":"","sources":["../src/oneShot.ts"],"names":[],"mappings":"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"}
package/dist/repl.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type AuthMode } from './lib/auth.js';
1
+ import { type AuthMode } from 'document360-engine';
2
2
  export type ReplContext = {
3
3
  cwd: string;
4
4
  restartAgent: () => void;
@@ -7,4 +7,4 @@ export type ReplContext = {
7
7
  /** Pause the REPL's readline while another stdin consumer (e.g. the /resume picker) runs. */
8
8
  withPausedInput: <T>(fn: () => Promise<T>) => Promise<T>;
9
9
  };
10
- export declare function runRepl(cwd?: string, authMode?: AuthMode): Promise<void>;
10
+ export declare function runRepl(cwd?: string, authMode?: AuthMode, profileName?: string): Promise<void>;
package/dist/repl.js CHANGED
@@ -1,11 +1,8 @@
1
1
  import { createInterface } from 'node:readline/promises';
2
- import { startAgent } from './agent.js';
2
+ import { createSession, resolveAuth, getSession, setTitle, slugify, touchSession, upsertSession, generateTitle, resolveActiveProfile, decodeJwtClaims, isExpired, loadTokens, } from 'document360-engine';
3
3
  import { slashCommands, parseSlash } from './commands/index.js';
4
- import { resolveAuth } from './lib/auth.js';
5
- import { getSession, setTitle, slugify, touchSession, upsertSession } from './lib/sessionStore.js';
6
- import { generateTitle } from './lib/titleGen.js';
7
- import { accent, banner, dim, error, muted, ok } from './lib/colors.js';
8
- export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
4
+ import { accent, banner, dim, error, muted, ok, warn } from './lib/colors.js';
5
+ export async function runRepl(cwd = process.cwd(), authMode = 'auto', profileName) {
9
6
  const auth = resolveAuth(authMode);
10
7
  if (auth.kind === 'none') {
11
8
  console.error('');
@@ -19,7 +16,7 @@ export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
19
16
  console.error('');
20
17
  process.exit(2);
21
18
  }
22
- printWelcome(cwd);
19
+ printWelcome(cwd, profileName);
23
20
  if (auth.kind === 'subscription') {
24
21
  if (auth.stored) {
25
22
  console.log(dim(' Using your Claude subscription (no API key set).'));
@@ -29,7 +26,8 @@ export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
29
26
  }
30
27
  console.log('');
31
28
  }
32
- let session = startAgent(cwd);
29
+ let allowProdWrites = false; // armed by /allow-prod for production profiles
30
+ let session = createSession({ cwd, profileName, allowProdWrites });
33
31
  let tracker = { uuid: null, firstPrompt: null, titleFired: false };
34
32
  const rl = createInterface({ input: process.stdin, output: process.stdout });
35
33
  // Buffering line reader: readline's promise API drops lines that arrive while
@@ -69,8 +67,8 @@ export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
69
67
  const ctx = {
70
68
  cwd,
71
69
  restartAgent: () => {
72
- session.queue.close();
73
- session = startAgent(cwd);
70
+ session.close();
71
+ session = createSession({ cwd, profileName, allowProdWrites });
74
72
  tracker = { uuid: null, firstPrompt: null, titleFired: false };
75
73
  },
76
74
  currentUuid: () => tracker.uuid,
@@ -109,9 +107,16 @@ export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
109
107
  ctx.restartAgent();
110
108
  continue;
111
109
  }
110
+ if (result.kind === 'allow-prod') {
111
+ allowProdWrites = true;
112
+ ctx.restartAgent();
113
+ console.log(ok('✓ Production writes authorized for this session.'));
114
+ console.log('');
115
+ continue;
116
+ }
112
117
  if (result.kind === 'resume') {
113
- session.queue.close();
114
- session = startAgent(cwd, result.uuid);
118
+ session.close();
119
+ session = createSession({ cwd, resume: result.uuid, profileName, allowProdWrites });
115
120
  const rec = getSession(result.uuid);
116
121
  tracker = { uuid: result.uuid, firstPrompt: rec?.firstPrompt ?? null, titleFired: true };
117
122
  touchSession(result.uuid);
@@ -122,30 +127,48 @@ export async function runRepl(cwd = process.cwd(), authMode = 'auto') {
122
127
  if (result.kind === 'forward-to-agent') {
123
128
  if (!tracker.firstPrompt)
124
129
  tracker.firstPrompt = result.prompt;
125
- session.queue.push(result.prompt);
126
- await consumeUntilResult(session.iterator, auth, tracker, cwd);
130
+ await runTurn(session, result.prompt, auth, tracker, cwd);
127
131
  }
128
132
  continue;
129
133
  }
130
134
  if (!tracker.firstPrompt)
131
135
  tracker.firstPrompt = trimmed;
132
- session.queue.push(trimmed);
133
- await consumeUntilResult(session.iterator, auth, tracker, cwd);
136
+ await runTurn(session, trimmed, auth, tracker, cwd);
134
137
  }
135
138
  }
136
139
  finally {
137
- session.queue.close();
140
+ session.close();
138
141
  rl.close();
139
142
  }
140
143
  }
141
- function printWelcome(cwd) {
144
+ function printWelcome(cwd, profileName) {
142
145
  console.log('');
143
146
  console.log(banner('document360-writer'));
144
147
  console.log(dim(` cwd: ${cwd}`));
148
+ console.log(d360StatusLine(cwd, profileName));
145
149
  console.log(dim(' Type a prompt, or /help for slash commands. /exit to quit.'));
146
150
  console.log('');
147
151
  }
148
- const AUTH_ERROR_PATTERN = /auth|api key|login|credential|401|forbidden/i;
152
+ function d360StatusLine(cwd, profileName) {
153
+ try {
154
+ const active = resolveActiveProfile(cwd, profileName);
155
+ const prod = active.production ? warn(' ⚠ PRODUCTION') : '';
156
+ const tokens = loadTokens(active.name);
157
+ if (!tokens) {
158
+ return dim(` Document360: profile "${active.name}"${prod} — not logged in (d360-writer login)`);
159
+ }
160
+ const claims = { ...(decodeJwtClaims(tokens.idToken) ?? {}), ...(decodeJwtClaims(tokens.accessToken) ?? {}) };
161
+ const who = (claims['email'] ?? claims['preferred_username'] ?? 'signed in');
162
+ if (isExpired(tokens) && !tokens.refreshToken) {
163
+ return warn(` Document360: profile "${active.name}"${prod} — session expired (d360-writer login)`);
164
+ }
165
+ return dim(` Document360: ${who} · profile "${active.name}"${prod}`);
166
+ }
167
+ catch (e) {
168
+ // Old-shape/invalid config — surface the migration hint.
169
+ return dim(` Document360: ${e.message.split('.')[0]}`);
170
+ }
171
+ }
149
172
  function printSignInHelp() {
150
173
  console.error('');
151
174
  console.error(`Sign in with your Claude subscription: run ${accent('claude')} once, then retry.`);
@@ -181,74 +204,41 @@ function fireTitleGeneration(tracker, cwd) {
181
204
  })
182
205
  .catch(() => { });
183
206
  }
184
- async function consumeUntilResult(iterator, auth, tracker, cwd) {
185
- while (true) {
186
- let next;
187
- try {
188
- next = await iterator.next();
189
- }
190
- catch (err) {
191
- console.error('');
192
- console.error(error(`agent error: ${err.message}`));
193
- if (auth.kind === 'subscription' && AUTH_ERROR_PATTERN.test(err.message)) {
194
- printSignInHelp();
195
- }
196
- return;
197
- }
198
- if (next.done)
199
- return;
200
- const sessionId = next.value?.session_id;
201
- if (sessionId && !tracker.uuid)
202
- registerSession(tracker, sessionId, cwd);
203
- const stop = renderMessage(next.value);
204
- if (stop) {
207
+ /** Drive one user turn through the engine, rendering EngineEvents to the terminal. */
208
+ async function runTurn(session, text, auth, tracker, cwd) {
209
+ for await (const ev of session.send(text)) {
210
+ renderEvent(ev, tracker, cwd, auth);
211
+ }
212
+ }
213
+ function renderEvent(ev, tracker, cwd, auth) {
214
+ switch (ev.type) {
215
+ case 'session':
216
+ if (!tracker.uuid)
217
+ registerSession(tracker, ev.sessionId, cwd);
218
+ break;
219
+ case 'text':
220
+ process.stdout.write(ev.delta);
221
+ break;
222
+ case 'tool':
223
+ process.stdout.write('\n');
224
+ console.log(muted(` ⚙ ${ev.name}`));
225
+ break;
226
+ case 'result':
227
+ process.stdout.write('\n');
228
+ console.log(dim(` (${ev.inputTokens}→${ev.outputTokens} tokens)`));
229
+ console.log('');
205
230
  if (tracker.uuid) {
206
231
  touchSession(tracker.uuid);
207
232
  if (!tracker.titleFired)
208
233
  fireTitleGeneration(tracker, cwd);
209
234
  }
210
- return;
211
- }
212
- }
213
- }
214
- function renderMessage(raw) {
215
- if (!raw || typeof raw !== 'object')
216
- return false;
217
- const msg = raw;
218
- if (msg.type === 'stream_event') {
219
- const event = msg.event;
220
- if (event?.delta && typeof event.delta.text === 'string') {
221
- process.stdout.write(event.delta.text);
222
- }
223
- return false;
224
- }
225
- if (msg.type === 'assistant') {
226
- const message = msg.message;
227
- const blocks = message?.content ?? [];
228
- let printedNewline = false;
229
- for (const block of blocks) {
230
- const b = block;
231
- if (b.type === 'tool_use') {
232
- if (!printedNewline) {
233
- process.stdout.write('\n');
234
- printedNewline = true;
235
- }
236
- console.log(muted(` ⚙ ${b.name ?? 'tool'}`));
237
- }
238
- }
239
- return false;
240
- }
241
- if (msg.type === 'result') {
242
- const result = msg;
243
- process.stdout.write('\n');
244
- if (result.usage) {
245
- const inT = result.usage.input_tokens ?? 0;
246
- const outT = result.usage.output_tokens ?? 0;
247
- console.log(dim(` (${inT}→${outT} tokens)`));
248
- }
249
- console.log('');
250
- return true;
235
+ break;
236
+ case 'error':
237
+ console.error('');
238
+ console.error(error(`agent error: ${ev.message}`));
239
+ if (auth.kind === 'subscription' && ev.kind === 'auth')
240
+ printSignInHelp();
241
+ break;
251
242
  }
252
- return false;
253
243
  }
254
244
  //# sourceMappingURL=repl.js.map
package/dist/repl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}