document360-writer 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +23 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.js +1 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/logsCli.d.ts +2 -0
- package/dist/commands/logsCli.js +31 -0
- package/dist/commands/logsCli.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.js +8 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/d360/authCli.js +16 -1
- package/dist/d360/authCli.js.map +1 -1
- package/dist/d360/portalLink.d.ts +18 -0
- package/dist/d360/portalLink.js +43 -0
- package/dist/d360/portalLink.js.map +1 -0
- package/dist/d360/workspaceCli.d.ts +15 -0
- package/dist/d360/workspaceCli.js +72 -0
- package/dist/d360/workspaceCli.js.map +1 -0
- package/dist/lib/mdRender.d.ts +7 -0
- package/dist/lib/mdRender.js +172 -0
- package/dist/lib/mdRender.js.map +1 -0
- package/dist/lib/streaming.d.ts +23 -0
- package/dist/lib/streaming.js +51 -0
- package/dist/lib/streaming.js.map +1 -0
- package/dist/lib/toolFormat.d.ts +26 -0
- package/dist/lib/toolFormat.js +115 -0
- package/dist/lib/toolFormat.js.map +1 -0
- package/dist/repl.js +49 -6
- package/dist/repl.js.map +1 -1
- package/dist/tui/App.js +257 -63
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/catalog.js +2 -0
- package/dist/tui/catalog.js.map +1 -1
- package/dist/tui/itemRender.d.ts +56 -0
- package/dist/tui/itemRender.js +72 -0
- package/dist/tui/itemRender.js.map +1 -0
- package/package.json +5 -3
- package/dist/tui/markdown.d.ts +0 -4
- package/dist/tui/markdown.js +0 -139
- package/dist/tui/markdown.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,8 @@ import { createRequire } from 'node:module';
|
|
|
4
4
|
import { AUTH_MODES } from 'document360-engine';
|
|
5
5
|
import { runLogin, runLogout, runWhoami } from './d360/authCli.js';
|
|
6
6
|
import { runProfileList, runProfileShow, runProfileUse } from './d360/profileCli.js';
|
|
7
|
+
import { runWorkspacePicker, runWorkspaceUse } from './d360/workspaceCli.js';
|
|
8
|
+
import { runLogs } from './commands/logsCli.js';
|
|
7
9
|
import { runOnce } from './oneShot.js';
|
|
8
10
|
import { runRepl } from './repl.js';
|
|
9
11
|
import { runTui } from './tui/index.js';
|
|
@@ -60,6 +62,27 @@ profileCmd
|
|
|
60
62
|
.command('show [name]')
|
|
61
63
|
.description('Print the resolved profile (connection + project)')
|
|
62
64
|
.action(name => runProfileShow(process.cwd(), name));
|
|
65
|
+
const workspaceCmd = program
|
|
66
|
+
.command('workspace')
|
|
67
|
+
.description('Choose the Document360 workspace for this repo (active profile\'s project)');
|
|
68
|
+
workspaceCmd
|
|
69
|
+
.command('select', { isDefault: true })
|
|
70
|
+
.description('Interactively pick the workspace (lists in non-TTY)')
|
|
71
|
+
.option('--profile <name>', 'Connection profile')
|
|
72
|
+
.action(opts => runWorkspacePicker(process.cwd(), opts.profile));
|
|
73
|
+
workspaceCmd
|
|
74
|
+
.command('use <name>')
|
|
75
|
+
.description('Set the workspace by name (scriptable)')
|
|
76
|
+
.option('--profile <name>', 'Connection profile')
|
|
77
|
+
// Set exitCode (not process.exit) so an in-flight fetch socket can close cleanly —
|
|
78
|
+
// a hard exit mid-close triggers a libuv UV_HANDLE_CLOSING assertion on Windows.
|
|
79
|
+
.action(async (name, opts) => {
|
|
80
|
+
process.exitCode = await runWorkspaceUse(process.cwd(), name, opts.profile);
|
|
81
|
+
});
|
|
82
|
+
program
|
|
83
|
+
.command('logs')
|
|
84
|
+
.description('Show the Document360 API log files (send these to support when reporting a problem)')
|
|
85
|
+
.action(() => runLogs());
|
|
63
86
|
program
|
|
64
87
|
.name('d360-writer')
|
|
65
88
|
.description('Standalone documentation agent CLI. Reads your code, writes your docs.')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,2FAA2F;AAC3F,SAAS,eAAe,CAAC,IAAsB;IAC7C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,6DAA6D,CAAC;KACzF,MAAM,CAAC,cAAc,EAAE,KAA0B,CAAC,CAAC,sBAAsB;KACzE,MAAM,CAAC,UAAU,EAAE,6EAA6E,CAAC;KACjG,MAAM,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;IACnB,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAChD,MAAM,CAAC,cAAc,EAAE,KAA0B,CAAC;KAClD,MAAM,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;IACnB,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAChD,MAAM,CAAC,cAAc,EAAE,KAA0B,CAAC;KAClD,MAAM,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;IACnB,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,yFAAyF;AACzF,qFAAqF;AACrF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;AAC7G,UAAU;KACP,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/C,UAAU;KACP,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD,UAAU;KACP,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvD,MAAM,YAAY,GAAG,OAAO;KACzB,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,4EAA4E,CAAC,CAAC;AAC7F,YAAY;KACT,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAChD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,YAAY;KACT,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IACjD,mFAAmF;IACnF,iFAAiF;KAChF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC3B,OAAO,CAAC,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qFAAqF,CAAC;KAClG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AAE3B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,wEAAwE,CAAC;KACrF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;KACrC,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,qEAAqE,CAAC;KACpG,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,sCAAsC,EAAE,MAAM,CAAC;KACvE,MAAM,CAAC,kBAAkB,EAAE,6DAA6D,CAAC;KACzF,MAAM,CAAC,OAAO,EAAE,0DAA0D,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;IACnB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAgB,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,2EAA2E;IAC3E,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/commands/help.js
CHANGED
|
@@ -15,6 +15,7 @@ export async function helpCommand() {
|
|
|
15
15
|
` ${accent('/resume [name]')} ${dim('Resume a session (no arg: searchable picker)')}`,
|
|
16
16
|
` ${accent('/rename <name>')} ${dim('Name the current session')}`,
|
|
17
17
|
` ${accent('/profile [name]')} ${dim('Show profiles, or switch + restart agent')}`,
|
|
18
|
+
` ${accent('/workspace [name]')} ${dim('List or switch the Document360 workspace')}`,
|
|
18
19
|
` ${accent('/allow-prod')} ${dim('Authorize writes to a production profile (this session)')}`,
|
|
19
20
|
` ${accent('/clear')} ${dim('Reset conversation')}`,
|
|
20
21
|
` ${accent('/exit')} ${dim('Quit')}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,IAAI,CAAC,qCAAqC,CAAC;QAC3C,EAAE;QACF,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,gBAAgB,CAAC,EAAE;QAC5E,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,yCAAyC,CAAC,EAAE;QACrG,KAAK,MAAM,CAAC,8BAA8B,CAAC,UAAU,GAAG,CAAC,gEAAgE,CAAC,EAAE;QAC5H,KAAK,MAAM,CAAC,WAAW,CAAC,6BAA6B,GAAG,CAAC,6BAA6B,CAAC,EAAE;QACzF,KAAK,MAAM,CAAC,oBAAoB,CAAC,oBAAoB,GAAG,CAAC,0BAA0B,CAAC,EAAE;QACtF,KAAK,MAAM,CAAC,yBAAyB,CAAC,eAAe,GAAG,CAAC,oCAAoC,CAAC,EAAE;QAChG,KAAK,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,CAAC,uCAAuC,CAAC,EAAE;QACnG,KAAK,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,GAAG,CAAC,4CAA4C,CAAC,EAAE;QACxG,KAAK,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,CAAC,8CAA8C,CAAC,EAAE;QAC1G,KAAK,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,CAAC,0BAA0B,CAAC,EAAE;QACtF,KAAK,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,0CAA0C,CAAC,EAAE;QACtG,KAAK,MAAM,CAAC,aAAa,CAAC,2BAA2B,GAAG,CAAC,yDAAyD,CAAC,EAAE;QACrH,KAAK,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,CAAC,oBAAoB,CAAC,EAAE;QAChF,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,EAAE;QAClE,EAAE;QACF,GAAG,CAAC,oDAAoD,CAAC;QACzD,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,IAAI,CAAC,qCAAqC,CAAC;QAC3C,EAAE;QACF,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,gBAAgB,CAAC,EAAE;QAC5E,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,yCAAyC,CAAC,EAAE;QACrG,KAAK,MAAM,CAAC,8BAA8B,CAAC,UAAU,GAAG,CAAC,gEAAgE,CAAC,EAAE;QAC5H,KAAK,MAAM,CAAC,WAAW,CAAC,6BAA6B,GAAG,CAAC,6BAA6B,CAAC,EAAE;QACzF,KAAK,MAAM,CAAC,oBAAoB,CAAC,oBAAoB,GAAG,CAAC,0BAA0B,CAAC,EAAE;QACtF,KAAK,MAAM,CAAC,yBAAyB,CAAC,eAAe,GAAG,CAAC,oCAAoC,CAAC,EAAE;QAChG,KAAK,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,CAAC,uCAAuC,CAAC,EAAE;QACnG,KAAK,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,GAAG,CAAC,4CAA4C,CAAC,EAAE;QACxG,KAAK,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,CAAC,8CAA8C,CAAC,EAAE;QAC1G,KAAK,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,CAAC,0BAA0B,CAAC,EAAE;QACtF,KAAK,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,0CAA0C,CAAC,EAAE;QACtG,KAAK,MAAM,CAAC,mBAAmB,CAAC,qBAAqB,GAAG,CAAC,0CAA0C,CAAC,EAAE;QACtG,KAAK,MAAM,CAAC,aAAa,CAAC,2BAA2B,GAAG,CAAC,yDAAyD,CAAC,EAAE;QACrH,KAAK,MAAM,CAAC,QAAQ,CAAC,gCAAgC,GAAG,CAAC,oBAAoB,CAAC,EAAE;QAChF,KAAK,MAAM,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,EAAE;QAClE,EAAE;QACF,GAAG,CAAC,oDAAoD,CAAC;QACzD,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { auditCommand } from './audit.js';
|
|
|
8
8
|
import { resumeCommand } from './resume.js';
|
|
9
9
|
import { renameCommand } from './rename.js';
|
|
10
10
|
import { profileCommand } from './profile.js';
|
|
11
|
+
import { workspaceCommand } from './workspace.js';
|
|
11
12
|
import { allowProdCommand } from './allowProd.js';
|
|
12
13
|
import { screenshotCommand } from './screenshot.js';
|
|
13
14
|
export const slashCommands = {
|
|
@@ -23,6 +24,7 @@ export const slashCommands = {
|
|
|
23
24
|
resume: resumeCommand,
|
|
24
25
|
rename: renameCommand,
|
|
25
26
|
profile: profileCommand,
|
|
27
|
+
workspace: workspaceCommand,
|
|
26
28
|
'allow-prod': allowProdCommand,
|
|
27
29
|
screenshot: screenshotCommand,
|
|
28
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAapD,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,iBAAiB;CAC9B,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAapD,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,gBAAgB;IAC3B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,iBAAiB;CAC9B,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { apiLogDir } from 'document360-engine';
|
|
4
|
+
import { accent, dim } from '../lib/colors.js';
|
|
5
|
+
/** `d360-writer logs` — the one command to give a customer reporting a problem. */
|
|
6
|
+
export function runLogs() {
|
|
7
|
+
const dir = apiLogDir();
|
|
8
|
+
console.log('');
|
|
9
|
+
console.log(`Document360 API logs: ${accent(dir)}`);
|
|
10
|
+
if (!existsSync(dir)) {
|
|
11
|
+
console.log(dim(' No logs yet — they appear after the first Document360 API call.'));
|
|
12
|
+
console.log('');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const files = readdirSync(dir)
|
|
16
|
+
.filter(f => f.endsWith('.jsonl'))
|
|
17
|
+
.sort()
|
|
18
|
+
.reverse();
|
|
19
|
+
if (files.length === 0) {
|
|
20
|
+
console.log(dim(' No logs yet — they appear after the first Document360 API call.'));
|
|
21
|
+
}
|
|
22
|
+
for (const f of files.slice(0, 14)) {
|
|
23
|
+
const kb = (statSync(join(dir, f)).size / 1024).toFixed(1);
|
|
24
|
+
console.log(` ${f} ${dim(`${kb} KB`)}`);
|
|
25
|
+
}
|
|
26
|
+
console.log('');
|
|
27
|
+
console.log(dim('Failed calls include request/response bodies (tokens redacted, 4 KB cap).'));
|
|
28
|
+
console.log(dim('Set D360_LOG_BODIES=1 to also log bodies for successful calls.'));
|
|
29
|
+
console.log('');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=logsCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logsCli.js","sourceRoot":"","sources":["../../src/commands/logsCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE/C,mFAAmF;AACnF,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACjC,IAAI,EAAE;SACN,OAAO,EAAE,CAAC;IACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { input } from '@inquirer/prompts';
|
|
2
|
-
import { loginPkce, refreshTokens, toStoredTokens, clearTokens, decodeJwtClaims, isExpired, loadTokens, saveTokens, resolveActiveProfile, setProfileProject, } from 'document360-engine';
|
|
2
|
+
import { loginPkce, refreshTokens, toStoredTokens, clearTokens, decodeJwtClaims, isExpired, loadTokens, saveTokens, resolveActiveProfile, setProfileProject, readProjectConfig, } from 'document360-engine';
|
|
3
|
+
import { runWorkspacePicker } from './workspaceCli.js';
|
|
3
4
|
import { accent, dim, error, ok, warn } from '../lib/colors.js';
|
|
4
5
|
function allClaims(tokens) {
|
|
5
6
|
// Merge id + access claims — email/name may live in either (berlin puts them in both,
|
|
@@ -26,6 +27,20 @@ export async function runLogin(opts) {
|
|
|
26
27
|
console.log(ok(`✓ Logged in to "${active.name}" as ${identityLine(tokens)}`));
|
|
27
28
|
console.log(dim(` access token expires: ${tokens.expiresAt}`));
|
|
28
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
|
+
}
|
|
29
44
|
}
|
|
30
45
|
function maybePersistProject(tokens, profileName) {
|
|
31
46
|
const claims = allClaims(tokens);
|
package/dist/d360/authCli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCli.js","sourceRoot":"","sources":["../../src/d360/authCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,UAAU,EAEV,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEhE,SAAS,SAAS,CAAC,MAAoB;IACrC,sFAAsF;IACtF,uDAAuD;IACvD,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,CAAW,CAAC;IACtG,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,mBAAmB,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzG,OAAO,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAA4C;IACzE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEvH,MAAM,aAAa,GAAG,MAAM,SAAS,CACnC,GAAG,EACH,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAC1E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAC;IACF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1D,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,iFAAiF;IACjF,gEAAgE;IAChE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,MAAM,CAAC,IAAI,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"authCli.js","sourceRoot":"","sources":["../../src/d360/authCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 declare function articleEditorUrl(portalUrl: string, projectId: string, articleId: string, languageCode?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Pull the article id out of a write-tool exchange: update/fork/publish carry it in
|
|
14
|
+
* the input; create returns it in the result (bulk-create → array with one item).
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractArticleId(input: Record<string, unknown>, output: string): string | null;
|
|
17
|
+
/** Public KB URL from a tool result, if the API returned one (live after publish). */
|
|
18
|
+
export declare function extractPublicUrl(output: string): string | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Render inline **bold**, *italic*, `code` as ANSI-styled spans. */
|
|
2
|
+
export declare function inlineMd(text: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Render finalized markdown to an ANSI string. Blocks are joined with one blank line
|
|
5
|
+
* (uniform spacing — source blocks are blank-line separated, so render them so).
|
|
6
|
+
*/
|
|
7
|
+
export declare function renderMarkdown(md: string, width: number): string;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown → ANSI string renderer for finalized transcript content. Pure functions —
|
|
3
|
+
* no Ink. Replaces the Ink <Markdown> component so the transcript can be printed (and
|
|
4
|
+
* REPLAYED at a new width on resize) through Ink's console patch; also reusable by the
|
|
5
|
+
* plain REPL. Covers what a documentation agent actually emits: headings, bold/italic/
|
|
6
|
+
* inline-code, bullet/numbered lists, fenced code, ---, and GitHub-style tables.
|
|
7
|
+
*/
|
|
8
|
+
import pc from 'picocolors';
|
|
9
|
+
import wrapAnsi from 'wrap-ansi';
|
|
10
|
+
import stringWidth from 'string-width';
|
|
11
|
+
const isHr = (line) => /^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(line);
|
|
12
|
+
const isTableSep = (line) => /^\s*\|?[\s:|-]*-[\s:|-]*\|?\s*$/.test(line) && line.includes('-');
|
|
13
|
+
const splitCells = (line) => line.replace(/^\s*\|/, '').replace(/\|\s*$/, '').split('|').map(c => c.trim());
|
|
14
|
+
function parseBlocks(md) {
|
|
15
|
+
const lines = md.replace(/\r/g, '').split('\n');
|
|
16
|
+
const blocks = [];
|
|
17
|
+
let i = 0;
|
|
18
|
+
while (i < lines.length) {
|
|
19
|
+
const line = lines[i];
|
|
20
|
+
// fenced code
|
|
21
|
+
if (/^\s*```/.test(line)) {
|
|
22
|
+
const code = [];
|
|
23
|
+
i++;
|
|
24
|
+
while (i < lines.length && !/^\s*```/.test(lines[i]))
|
|
25
|
+
code.push(lines[i++]);
|
|
26
|
+
i++; // closing fence
|
|
27
|
+
blocks.push({ kind: 'code', lines: code });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// horizontal rule (---, ***, ___) — must precede the para fallback
|
|
31
|
+
if (isHr(line)) {
|
|
32
|
+
blocks.push({ kind: 'hr' });
|
|
33
|
+
i++;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// table: a `| … |`-ish line followed by a separator row
|
|
37
|
+
if (line.includes('|') && i + 1 < lines.length && isTableSep(lines[i + 1])) {
|
|
38
|
+
const header = splitCells(line);
|
|
39
|
+
i += 2;
|
|
40
|
+
const rows = [];
|
|
41
|
+
while (i < lines.length && lines[i].includes('|') && lines[i].trim() !== '') {
|
|
42
|
+
rows.push(splitCells(lines[i++]));
|
|
43
|
+
}
|
|
44
|
+
blocks.push({ kind: 'table', header, rows });
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// heading
|
|
48
|
+
const h = line.match(/^(#{1,6})\s+(.*)$/);
|
|
49
|
+
if (h) {
|
|
50
|
+
blocks.push({ kind: 'heading', level: h[1].length, text: h[2] });
|
|
51
|
+
i++;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// list (consecutive bullet / numbered lines)
|
|
55
|
+
if (/^\s*([-*]|\d+\.)\s+/.test(line)) {
|
|
56
|
+
const items = [];
|
|
57
|
+
while (i < lines.length && /^\s*([-*]|\d+\.)\s+/.test(lines[i])) {
|
|
58
|
+
items.push(lines[i++].replace(/^\s*([-*]|\d+\.)\s+/, ''));
|
|
59
|
+
}
|
|
60
|
+
blocks.push({ kind: 'list', items });
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
// blank
|
|
64
|
+
if (line.trim() === '') {
|
|
65
|
+
i++;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// paragraph (gather until blank / block boundary)
|
|
69
|
+
const para = [];
|
|
70
|
+
while (i < lines.length &&
|
|
71
|
+
lines[i].trim() !== '' &&
|
|
72
|
+
!/^\s*```/.test(lines[i]) &&
|
|
73
|
+
!/^(#{1,6})\s/.test(lines[i]) &&
|
|
74
|
+
!/^\s*([-*]|\d+\.)\s+/.test(lines[i]) &&
|
|
75
|
+
!isHr(lines[i]) &&
|
|
76
|
+
!(lines[i].includes('|') && i + 1 < lines.length && isTableSep(lines[i + 1]))) {
|
|
77
|
+
para.push(lines[i++]);
|
|
78
|
+
}
|
|
79
|
+
blocks.push({ kind: 'para', text: para.join(' ') });
|
|
80
|
+
}
|
|
81
|
+
return blocks;
|
|
82
|
+
}
|
|
83
|
+
/** Render inline **bold**, *italic*, `code` as ANSI-styled spans. */
|
|
84
|
+
export function inlineMd(text) {
|
|
85
|
+
return text.replace(/(\*\*[^*]+\*\*|`[^`]+`|\*[^*]+\*)/g, tok => {
|
|
86
|
+
if (tok.startsWith('**'))
|
|
87
|
+
return pc.bold(tok.slice(2, -2));
|
|
88
|
+
if (tok.startsWith('`'))
|
|
89
|
+
return pc.cyan(tok.slice(1, -1));
|
|
90
|
+
return pc.italic(tok.slice(1, -1));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const padTo = (line, w) => line + ' '.repeat(Math.max(0, w - stringWidth(line)));
|
|
94
|
+
function renderTable(header, rows, width) {
|
|
95
|
+
const cols = header.length;
|
|
96
|
+
// Natural width = widest cell per column; shrink the widest column until the table
|
|
97
|
+
// fits (min 6) and wrap cells inside their fixed-width column.
|
|
98
|
+
const natural = header.map((h, c) => Math.max(stringWidth(h), ...rows.map(r => stringWidth(r[c] ?? ''))));
|
|
99
|
+
const avail = Math.max(24, width);
|
|
100
|
+
// Per cell: left border (1) + padding (2); plus the table's closing right border (1).
|
|
101
|
+
const overhead = 3 * cols + 1;
|
|
102
|
+
const widths = [...natural];
|
|
103
|
+
const total = () => widths.reduce((a, b) => a + b, 0) + overhead;
|
|
104
|
+
let guard = 0;
|
|
105
|
+
while (total() > avail && guard++ < 10000) {
|
|
106
|
+
let idx = -1;
|
|
107
|
+
let max = 6; // floor
|
|
108
|
+
for (let c = 0; c < cols; c++) {
|
|
109
|
+
if (widths[c] > max) {
|
|
110
|
+
max = widths[c];
|
|
111
|
+
idx = c;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (idx === -1)
|
|
115
|
+
break; // all at floor
|
|
116
|
+
widths[idx] -= 1;
|
|
117
|
+
}
|
|
118
|
+
const rule = (left, mid, right) => pc.gray(left + widths.map(w => '─'.repeat(w + 2)).join(mid) + right);
|
|
119
|
+
const v = pc.gray('│');
|
|
120
|
+
const renderRow = (cells, head) => {
|
|
121
|
+
const cellLines = widths.map((w, c) => {
|
|
122
|
+
const raw = cells[c] ?? '';
|
|
123
|
+
const styled = head ? pc.bold(pc.cyan(raw)) : inlineMd(raw);
|
|
124
|
+
return wrapAnsi(styled, w, { hard: true }).split('\n');
|
|
125
|
+
});
|
|
126
|
+
const height = Math.max(...cellLines.map(l => l.length));
|
|
127
|
+
const out = [];
|
|
128
|
+
for (let r = 0; r < height; r++) {
|
|
129
|
+
out.push(widths.map((w, c) => `${v} ${padTo(cellLines[c][r] ?? '', w)} `).join('') + v);
|
|
130
|
+
}
|
|
131
|
+
return out.join('\n');
|
|
132
|
+
};
|
|
133
|
+
const parts = [rule('┌', '┬', '┐'), renderRow(header, true)];
|
|
134
|
+
parts.push(rows.length === 0 ? rule('└', '┴', '┘') : rule('├', '┼', '┤'));
|
|
135
|
+
rows.forEach((r, ri) => {
|
|
136
|
+
parts.push(renderRow(r, false));
|
|
137
|
+
parts.push(ri === rows.length - 1 ? rule('└', '┴', '┘') : rule('├', '┼', '┤'));
|
|
138
|
+
});
|
|
139
|
+
return parts.join('\n');
|
|
140
|
+
}
|
|
141
|
+
function renderBlock(b, width) {
|
|
142
|
+
switch (b.kind) {
|
|
143
|
+
case 'heading':
|
|
144
|
+
return pc.bold(pc.cyan(b.text));
|
|
145
|
+
case 'hr':
|
|
146
|
+
return pc.gray('─'.repeat(width));
|
|
147
|
+
case 'para':
|
|
148
|
+
return wrapAnsi(inlineMd(b.text), width);
|
|
149
|
+
case 'list':
|
|
150
|
+
return b.items
|
|
151
|
+
.map(it => {
|
|
152
|
+
const [first = '', ...rest] = wrapAnsi(inlineMd(it), Math.max(10, width - 4)).split('\n');
|
|
153
|
+
return pc.cyan(' • ') + first + rest.map(r => '\n ' + r).join('');
|
|
154
|
+
})
|
|
155
|
+
.join('\n');
|
|
156
|
+
case 'code':
|
|
157
|
+
return b.lines.map(l => pc.gray(' ' + l)).join('\n');
|
|
158
|
+
case 'table':
|
|
159
|
+
return renderTable(b.header, b.rows, width);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Render finalized markdown to an ANSI string. Blocks are joined with one blank line
|
|
164
|
+
* (uniform spacing — source blocks are blank-line separated, so render them so).
|
|
165
|
+
*/
|
|
166
|
+
export function renderMarkdown(md, width) {
|
|
167
|
+
const w = Math.max(20, width);
|
|
168
|
+
return parseBlocks(md)
|
|
169
|
+
.map(b => renderBlock(b, w))
|
|
170
|
+
.join('\n\n');
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=mdRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdRender.js","sourceRoot":"","sources":["../../src/lib/mdRender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming-markdown flush support. While the agent streams, completed paragraphs are
|
|
3
|
+
* flushed into the static (markdown-rendered) transcript so what scrolls out of the
|
|
4
|
+
* viewport is already pretty — Ink can only repaint what's still on screen, so raw
|
|
5
|
+
* streamed text left in scrollback stays raw forever (Claude Code flushes the same way).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Cut position after the last blank line that lies outside any ``` fence, or 0 when
|
|
9
|
+
* there's no safe cut yet. Text before the cut is a complete run of markdown blocks
|
|
10
|
+
* (a fence keeps code blocks intact; tables/lists have no internal blank lines).
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Tail of the live streaming buffer, capped to ~maxRows visual rows so the dynamic
|
|
14
|
+
* region can never outgrow the viewport — Ink erases the live area by line count, and
|
|
15
|
+
* anything that scrolls off-screen leaves un-repaintable raw frames in scrollback.
|
|
16
|
+
* Row usage is estimated as ceil(len/width) per source line (Ink word-wraps, so this
|
|
17
|
+
* is approximate — callers should leave headroom when picking maxRows).
|
|
18
|
+
*/
|
|
19
|
+
export declare function liveTail(text: string, maxRows: number, width: number): {
|
|
20
|
+
text: string;
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare function streamCut(text: string): number;
|