document360-writer 0.4.0 → 0.4.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.
- package/LICENSE +10 -16
- package/README.md +1 -1
- package/dist/cli.js +63 -123
- package/dist/commands/doctor.d.ts +13 -0
- package/dist/commands/index.d.ts +5 -1
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/model.d.ts +16 -0
- package/dist/commands/profile.d.ts +3 -0
- package/dist/commands/publish.d.ts +12 -1
- package/dist/commands/scope.d.ts +9 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/d360/authCli.d.ts +3 -0
- package/dist/lib/colors.d.ts +2 -0
- package/dist/lib/commandSuggest.d.ts +7 -0
- package/dist/lib/diffRender.d.ts +8 -0
- package/dist/lib/hyperlink.d.ts +5 -0
- package/dist/lib/inputLayout.d.ts +19 -0
- package/dist/lib/mascot.d.ts +5 -0
- package/dist/lib/modelChoices.d.ts +14 -0
- package/dist/lib/paste.d.ts +19 -0
- package/dist/lib/syncRender.d.ts +6 -0
- package/dist/lib/toolFormat.d.ts +6 -2
- package/dist/repl.d.ts +2 -0
- package/dist/tui/App.d.ts +1 -1
- package/dist/tui/catalog.d.ts +4 -0
- package/dist/tui/itemRender.d.ts +14 -0
- package/package.json +5 -4
- package/dist/cli.js.map +0 -1
- package/dist/commands/allowProd.js +0 -18
- package/dist/commands/allowProd.js.map +0 -1
- package/dist/commands/audit.js +0 -12
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/clear.js +0 -14
- package/dist/commands/clear.js.map +0 -1
- package/dist/commands/exit.js +0 -4
- package/dist/commands/exit.js.map +0 -1
- package/dist/commands/help.js +0 -30
- package/dist/commands/help.js.map +0 -1
- package/dist/commands/index.js +0 -44
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/init.js +0 -83
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/logsCli.js +0 -31
- package/dist/commands/logsCli.js.map +0 -1
- package/dist/commands/mcp.js +0 -103
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/profile.js +0 -16
- package/dist/commands/profile.js.map +0 -1
- package/dist/commands/publish.js +0 -19
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/rename.js +0 -22
- package/dist/commands/rename.js.map +0 -1
- package/dist/commands/resume.js +0 -58
- package/dist/commands/resume.js.map +0 -1
- package/dist/commands/screenshot.js +0 -20
- package/dist/commands/screenshot.js.map +0 -1
- package/dist/commands/workspace.js +0 -8
- package/dist/commands/workspace.js.map +0 -1
- package/dist/d360/authCli.js +0 -106
- package/dist/d360/authCli.js.map +0 -1
- package/dist/d360/portalLink.js +0 -43
- package/dist/d360/portalLink.js.map +0 -1
- package/dist/d360/profileCli.js +0 -54
- package/dist/d360/profileCli.js.map +0 -1
- package/dist/d360/workspaceCli.js +0 -72
- package/dist/d360/workspaceCli.js.map +0 -1
- package/dist/lib/colors.js +0 -10
- package/dist/lib/colors.js.map +0 -1
- package/dist/lib/mdRender.js +0 -172
- package/dist/lib/mdRender.js.map +0 -1
- package/dist/lib/streaming.js +0 -51
- package/dist/lib/streaming.js.map +0 -1
- package/dist/lib/toolFormat.js +0 -115
- package/dist/lib/toolFormat.js.map +0 -1
- package/dist/oneShot.js +0 -96
- package/dist/oneShot.js.map +0 -1
- package/dist/repl.js +0 -287
- package/dist/repl.js.map +0 -1
- package/dist/tui/App.js +0 -607
- package/dist/tui/App.js.map +0 -1
- package/dist/tui/catalog.js +0 -22
- package/dist/tui/catalog.js.map +0 -1
- package/dist/tui/index.js +0 -24
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/itemRender.js +0 -72
- package/dist/tui/itemRender.js.map +0 -1
package/dist/commands/mcp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/profile.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { runProfileList, runProfileUse, runProfileShow } from '../d360/profileCli.js';
|
|
2
|
-
import { dim } from '../lib/colors.js';
|
|
3
|
-
export async function profileCommand(args, ctx) {
|
|
4
|
-
const name = args[0];
|
|
5
|
-
if (!name) {
|
|
6
|
-
runProfileList(ctx.cwd);
|
|
7
|
-
return { kind: 'continue' };
|
|
8
|
-
}
|
|
9
|
-
// /profile <name> switches the default profile and restarts the agent so the
|
|
10
|
-
// in-process D360 tools rebind to the new connection/project.
|
|
11
|
-
runProfileUse(ctx.cwd, name);
|
|
12
|
-
runProfileShow(ctx.cwd, name);
|
|
13
|
-
console.log(dim(' Restarting agent for the new profile…'));
|
|
14
|
-
return { kind: 'clear' }; // clear → restartAgent in the REPL loop
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=profile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAIvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,GAAgB;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,6EAA6E;IAC7E,8DAA8D;IAC9D,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,wCAAwC;AACpE,CAAC"}
|
package/dist/commands/publish.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { error } from '../lib/colors.js';
|
|
2
|
-
export async function publishCommand(args) {
|
|
3
|
-
const path = args[0];
|
|
4
|
-
if (!path) {
|
|
5
|
-
console.log(error('Usage: /publish <article-path>'));
|
|
6
|
-
return { kind: 'continue' };
|
|
7
|
-
}
|
|
8
|
-
const prompt = [
|
|
9
|
-
`Run the publish-to-d360 skill for the article at: ${path}`,
|
|
10
|
-
'',
|
|
11
|
-
'Steps you must follow:',
|
|
12
|
-
'1. Read the article markdown.',
|
|
13
|
-
'2. Compute the D360 publish form (strip the H1 title, strip every <!-- SCREENSHOT ... --> block while keeping the visible [Screenshot: ...] line, normalize cross-article links).',
|
|
14
|
-
'3. Look up the article ID in <repo>/d360-category-map.json. If present, call the document360 MCP update-article tool. If absent, call create-article and write the new ID back to the category map.',
|
|
15
|
-
'4. Report what changed and remind me to publish the draft manually in the Document360 portal.',
|
|
16
|
-
].join('\n');
|
|
17
|
-
return { kind: 'forward-to-agent', prompt };
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=publish.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG;QACb,qDAAqD,IAAI,EAAE;QAC3D,EAAE;QACF,wBAAwB;QACxB,+BAA+B;QAC/B,mLAAmL;QACnL,qMAAqM;QACrM,+FAA+F;KAChG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC"}
|
package/dist/commands/rename.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { error, ok } from '../lib/colors.js';
|
|
2
|
-
import { renameSession } from 'document360-engine';
|
|
3
|
-
export async function renameCommand(args, ctx) {
|
|
4
|
-
const name = args.join(' ').trim();
|
|
5
|
-
if (!name) {
|
|
6
|
-
console.log(error('Usage: /rename <new name>'));
|
|
7
|
-
return { kind: 'continue' };
|
|
8
|
-
}
|
|
9
|
-
const uuid = ctx.currentUuid();
|
|
10
|
-
if (!uuid) {
|
|
11
|
-
console.log(error('Nothing to rename yet — send a message first; sessions auto-save once the agent replies.'));
|
|
12
|
-
return { kind: 'continue' };
|
|
13
|
-
}
|
|
14
|
-
if (renameSession(uuid, name)) {
|
|
15
|
-
console.log(ok(`✓ Session renamed to "${name}"`));
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
console.log(error('Could not find the current session record.'));
|
|
19
|
-
}
|
|
20
|
-
return { kind: 'continue' };
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=rename.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,GAAgB;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC,CAAC;QAC/G,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
|
package/dist/commands/resume.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { search } from '@inquirer/prompts';
|
|
2
|
-
import { accent, dim, error } from '../lib/colors.js';
|
|
3
|
-
import { findByName, getSession, listSessions, relativeTime } from 'document360-engine';
|
|
4
|
-
export async function resumeCommand(args, ctx) {
|
|
5
|
-
const sessions = listSessions(ctx.cwd).filter(s => s.uuid !== ctx.currentUuid());
|
|
6
|
-
if (sessions.length === 0) {
|
|
7
|
-
console.log(dim('No saved sessions for this repo yet — sessions auto-save as you work.'));
|
|
8
|
-
return { kind: 'continue' };
|
|
9
|
-
}
|
|
10
|
-
if (args.length > 0) {
|
|
11
|
-
const name = args.join(' ');
|
|
12
|
-
const rec = findByName(ctx.cwd, name);
|
|
13
|
-
if (!rec) {
|
|
14
|
-
console.log(error(`No session matches "${name}".`));
|
|
15
|
-
printList(sessions);
|
|
16
|
-
return { kind: 'continue' };
|
|
17
|
-
}
|
|
18
|
-
return { kind: 'resume', uuid: rec.uuid, name: rec.name };
|
|
19
|
-
}
|
|
20
|
-
if (!process.stdin.isTTY) {
|
|
21
|
-
printList(sessions);
|
|
22
|
-
console.log(dim('Run: /resume <name>'));
|
|
23
|
-
return { kind: 'continue' };
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const uuid = await ctx.withPausedInput(() => search({
|
|
27
|
-
message: 'Resume session (type to filter, ↑↓ to navigate):',
|
|
28
|
-
source: async (input) => {
|
|
29
|
-
const f = (input ?? '').toLowerCase();
|
|
30
|
-
return sessions
|
|
31
|
-
.filter(s => !f || s.name.toLowerCase().includes(f) || s.firstPrompt.toLowerCase().includes(f))
|
|
32
|
-
.map(s => ({
|
|
33
|
-
name: `${s.name} ${relativeTime(s.updatedAt)}`,
|
|
34
|
-
value: s.uuid,
|
|
35
|
-
description: s.firstPrompt.slice(0, 100),
|
|
36
|
-
}));
|
|
37
|
-
},
|
|
38
|
-
}));
|
|
39
|
-
const rec = getSession(uuid);
|
|
40
|
-
if (!rec)
|
|
41
|
-
return { kind: 'continue' };
|
|
42
|
-
return { kind: 'resume', uuid: rec.uuid, name: rec.name };
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// Ctrl+C / escape inside the picker — back to the REPL.
|
|
46
|
-
console.log('');
|
|
47
|
-
return { kind: 'continue' };
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function printList(sessions) {
|
|
51
|
-
console.log('');
|
|
52
|
-
for (const s of sessions.slice(0, 15)) {
|
|
53
|
-
console.log(` ${accent(s.name)} ${dim(relativeTime(s.updatedAt))}`);
|
|
54
|
-
console.log(` ${dim(s.firstPrompt.slice(0, 80))}`);
|
|
55
|
-
}
|
|
56
|
-
console.log('');
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { error } from '../lib/colors.js';
|
|
2
|
-
export async function screenshotCommand(args) {
|
|
3
|
-
const id = args[0];
|
|
4
|
-
if (!id) {
|
|
5
|
-
console.log(error('Usage: /screenshot <placeholder-id>'));
|
|
6
|
-
return { kind: 'continue' };
|
|
7
|
-
}
|
|
8
|
-
const prompt = [
|
|
9
|
-
`Run the emit-screenshot-spec skill for placeholder id: ${id}`,
|
|
10
|
-
'',
|
|
11
|
-
'Steps you must follow:',
|
|
12
|
-
'1. Locate the SCREENSHOT HTML comment block with this id across user-docs/**/*.md.',
|
|
13
|
-
'2. Translate the placeholder.steps into Playwright actions using STABLE selectors only (data-testid > aria-label > role+name > visible text). If no stable selector is available for a required action, write `test.skip(...)` plus a TODO comment naming the React component that needs a data-testid.',
|
|
14
|
-
'3. Write the spec file to <captureDir>/<id>.spec.ts. Use `import { test } from "@playwright/test"` and `import { waitPastLogin, dumpAnnotations, type Placeholder } from "document360-capture/helpers"`.',
|
|
15
|
-
"4. Use process.env.CAPTURE_START_URL and process.env.CAPTURE_AUTH_BOUNDARY (these are injected at run time by document360-capture; do not hardcode them).",
|
|
16
|
-
"5. Report the path of the generated spec and any TODOs from missing selectors.",
|
|
17
|
-
].join('\n');
|
|
18
|
-
return { kind: 'forward-to-agent', prompt };
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=screenshot.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG;QACb,0DAA0D,EAAE,EAAE;QAC9D,EAAE;QACF,wBAAwB;QACxB,oFAAoF;QACpF,ySAAyS;QACzS,0MAA0M;QAC1M,2JAA2J;QAC3J,gFAAgF;KACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { runWorkspacePicker } from '../d360/workspaceCli.js';
|
|
2
|
-
export async function workspaceCommand(_args, ctx) {
|
|
3
|
-
// Pause the REPL's reader so the inquirer picker owns stdin, then restart the agent
|
|
4
|
-
// so the in-process Document360 tools rebind to the newly-selected workspace.
|
|
5
|
-
await ctx.withPausedInput(() => runWorkspacePicker(ctx.cwd));
|
|
6
|
-
return { kind: 'clear' };
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe,EAAE,GAAgB;IACtE,oFAAoF;IACpF,8EAA8E;IAC9E,MAAM,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/d360/authCli.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { input } from '@inquirer/prompts';
|
|
2
|
-
import { loginPkce, refreshTokens, toStoredTokens, clearTokens, decodeJwtClaims, isExpired, loadTokens, saveTokens, resolveActiveProfile, setProfileProject, readProjectConfig, } from 'document360-engine';
|
|
3
|
-
import { runWorkspacePicker } from './workspaceCli.js';
|
|
4
|
-
import { accent, dim, error, ok, warn } from '../lib/colors.js';
|
|
5
|
-
function allClaims(tokens) {
|
|
6
|
-
// Merge id + access claims — email/name may live in either (berlin puts them in both,
|
|
7
|
-
// but the access token is the one guaranteed present).
|
|
8
|
-
return { ...(decodeJwtClaims(tokens.idToken) ?? {}), ...(decodeJwtClaims(tokens.accessToken) ?? {}) };
|
|
9
|
-
}
|
|
10
|
-
function identityLine(tokens) {
|
|
11
|
-
const claims = allClaims(tokens);
|
|
12
|
-
const who = (claims['email'] ?? claims['preferred_username'] ?? claims['sub'] ?? 'unknown');
|
|
13
|
-
const project = claims['doc360_project_id'] ? ` · project ${claims['doc360_project_id']}` : '';
|
|
14
|
-
return `${who}${project}`;
|
|
15
|
-
}
|
|
16
|
-
export async function runLogin(opts) {
|
|
17
|
-
const active = resolveActiveProfile(process.cwd(), opts.profile);
|
|
18
|
-
const env = active.connection;
|
|
19
|
-
console.log(dim(`Profile "${active.name}" → ${env.name} (${env.apiUrl})${active.production ? ' ⚠ PRODUCTION' : ''}`));
|
|
20
|
-
const tokenResponse = await loginPkce(env, { manual: opts.manual, promptForRedirect: msg => input({ message: msg }) }, line => console.log(line));
|
|
21
|
-
const tokens = toStoredTokens(active.name, tokenResponse);
|
|
22
|
-
saveTokens(tokens);
|
|
23
|
-
// Auto-fill the project chosen during login into the active profile (only when a
|
|
24
|
-
// config exists and the profile doesn't already pin a project).
|
|
25
|
-
maybePersistProject(tokens, active.name);
|
|
26
|
-
console.log('');
|
|
27
|
-
console.log(ok(`✓ Logged in to "${active.name}" as ${identityLine(tokens)}`));
|
|
28
|
-
console.log(dim(` access token expires: ${tokens.expiresAt}`));
|
|
29
|
-
console.log(dim(` refresh token: ${tokens.refreshToken ? 'yes' : 'NO — session ends at expiry'}`));
|
|
30
|
-
// Project is now known (from the token); offer the workspace sub-selection. Best-effort:
|
|
31
|
-
// only interactive TTY + a repo config to persist into; never block a successful login.
|
|
32
|
-
if (process.stdin.isTTY) {
|
|
33
|
-
try {
|
|
34
|
-
const cfg = readProjectConfig(process.cwd());
|
|
35
|
-
if (cfg?.profiles?.[active.name]) {
|
|
36
|
-
console.log('');
|
|
37
|
-
await runWorkspacePicker(process.cwd(), active.name);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
/* no/invalid config — skip workspace selection */
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function maybePersistProject(tokens, profileName) {
|
|
46
|
-
const claims = allClaims(tokens);
|
|
47
|
-
const projectId = claims['doc360_project_id'];
|
|
48
|
-
if (typeof projectId !== 'string' || !projectId)
|
|
49
|
-
return;
|
|
50
|
-
// setProfileProject is a no-op when there's no config or the profile is unknown,
|
|
51
|
-
// and we only fill when the slot is empty — never clobber an explicit choice.
|
|
52
|
-
try {
|
|
53
|
-
const active = resolveActiveProfile(process.cwd(), profileName);
|
|
54
|
-
if (active.project.projectId)
|
|
55
|
-
return;
|
|
56
|
-
setProfileProject(process.cwd(), profileName, { projectId });
|
|
57
|
-
console.log(dim(` Project ${projectId} written to profile "${profileName}".`));
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
/* no config / old-shape — nothing to persist into */
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export async function runWhoami(opts) {
|
|
64
|
-
const active = resolveActiveProfile(process.cwd(), opts.profile);
|
|
65
|
-
const env = active.connection;
|
|
66
|
-
const tokens = loadTokens(active.name);
|
|
67
|
-
if (!tokens) {
|
|
68
|
-
console.log(error(`Not logged in to Document360 (profile "${active.name}").`));
|
|
69
|
-
console.log(dim(`Run: d360-writer login --profile ${active.name}`));
|
|
70
|
-
process.exitCode = 1;
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
console.log(`Profile ${accent(active.name)}${active.production ? ' ⚠ PRODUCTION' : ''}: ${identityLine(tokens)}`);
|
|
74
|
-
if (isExpired(tokens)) {
|
|
75
|
-
if (tokens.refreshToken) {
|
|
76
|
-
try {
|
|
77
|
-
const refreshed = toStoredTokens(active.name, await refreshTokens(env, tokens.refreshToken));
|
|
78
|
-
saveTokens(refreshed);
|
|
79
|
-
console.log(ok(`✓ Session refreshed — expires ${refreshed.expiresAt}`));
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
console.log(warn(`Session expired and refresh failed (${err.message.slice(0, 120)})`));
|
|
83
|
-
console.log(dim(`Run: d360-writer login --profile ${active.name}`));
|
|
84
|
-
process.exitCode = 1;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
console.log(warn('Session expired (no refresh token).'));
|
|
89
|
-
console.log(dim(`Run: d360-writer login --profile ${active.name}`));
|
|
90
|
-
process.exitCode = 1;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
console.log(dim(` expires: ${tokens.expiresAt}`));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
export async function runLogout(opts) {
|
|
98
|
-
const active = resolveActiveProfile(process.cwd(), opts.profile);
|
|
99
|
-
if (clearTokens(active.name)) {
|
|
100
|
-
console.log(ok(`✓ Logged out of Document360 (profile "${active.name}").`));
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.log(dim(`No Document360 session for profile "${active.name}" — nothing to do.`));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=authCli.js.map
|
package/dist/d360/authCli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authCli.js","sourceRoot":"","sources":["../../src/d360/authCli.ts"],"names":[],"mappings":"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"}
|
package/dist/d360/portalLink.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deep links into the Document360 author portal, surfaced after the agent creates or
|
|
3
|
-
* updates an article so the real rendered outcome is one click away.
|
|
4
|
-
*
|
|
5
|
-
* NOTE: the editor path shape (`/{projectId}/document/v1/{lang}/{articleId}`) is a
|
|
6
|
-
* best-effort guess pending verification against the berlin portal during dogfood —
|
|
7
|
-
* if it 404s, fix it HERE (single source) or override the base via the profile's
|
|
8
|
-
* `connection.portalUrl` / `D360_PORTAL_URL`.
|
|
9
|
-
*/
|
|
10
|
-
/** Portal editor URL for a draft article. */
|
|
11
|
-
export function articleEditorUrl(portalUrl, projectId, articleId, languageCode = 'en') {
|
|
12
|
-
return `${portalUrl.replace(/\/$/, '')}/${projectId}/document/v1/${languageCode}/${articleId}`;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Pull the article id out of a write-tool exchange: update/fork/publish carry it in
|
|
16
|
-
* the input; create returns it in the result (bulk-create → array with one item).
|
|
17
|
-
*/
|
|
18
|
-
export function extractArticleId(input, output) {
|
|
19
|
-
if (typeof input['article_id'] === 'string' && input['article_id'])
|
|
20
|
-
return input['article_id'];
|
|
21
|
-
try {
|
|
22
|
-
const data = JSON.parse(output);
|
|
23
|
-
const first = Array.isArray(data) ? data[0] : data;
|
|
24
|
-
const id = first?.['id'];
|
|
25
|
-
return typeof id === 'string' && id ? id : null;
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/** Public KB URL from a tool result, if the API returned one (live after publish). */
|
|
32
|
-
export function extractPublicUrl(output) {
|
|
33
|
-
try {
|
|
34
|
-
const data = JSON.parse(output);
|
|
35
|
-
const first = Array.isArray(data) ? data[0] : data;
|
|
36
|
-
const url = first?.['url'];
|
|
37
|
-
return typeof url === 'string' && /^https?:\/\//.test(url) ? url : null;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=portalLink.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portalLink.js","sourceRoot":"","sources":["../../src/d360/portalLink.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6CAA6C;AAC7C,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,YAAY,GAAG,IAAI;IAC3G,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,gBAAgB,YAAY,IAAI,SAAS,EAAE,CAAC;AACjG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA8B,EAAE,MAAc;IAC7E,IAAI,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/F,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,EAAE,GAAI,KAAwC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,GAAG,GAAI,KAAwC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/d360/profileCli.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profileCli.js","sourceRoot":"","sources":["../../src/d360/profileCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceCli.js","sourceRoot":"","sources":["../../src/d360/workspaceCli.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/colors.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import pc from 'picocolors';
|
|
2
|
-
export const banner = (s) => pc.bold(pc.cyan(s));
|
|
3
|
-
export const dim = (s) => pc.dim(s);
|
|
4
|
-
export const error = (s) => pc.red(s);
|
|
5
|
-
export const warn = (s) => pc.yellow(s);
|
|
6
|
-
export const ok = (s) => pc.green(s);
|
|
7
|
-
export const accent = (s) => pc.cyan(s);
|
|
8
|
-
export const muted = (s) => pc.gray(s);
|
|
9
|
-
export const bold = (s) => pc.bold(s);
|
|
10
|
-
//# sourceMappingURL=colors.js.map
|
package/dist/lib/colors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/lib/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
|