@sagmans/dsh-tui 0.7.0 → 0.9.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/.agents/skills/dsh-tui-dogfood/SKILL.md +5 -1
- package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +26 -2
- package/.agents/skills/dsh-tui-update-models/SKILL.md +95 -17
- package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +158 -28
- package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +152 -16
- package/README.md +117 -53
- package/lib/agent/history.d.ts +0 -2
- package/lib/agent/history.d.ts.map +1 -1
- package/lib/agent/history.js +1 -1
- package/lib/agent/history.js.map +1 -1
- package/lib/agent/host.d.ts +0 -25
- package/lib/agent/host.d.ts.map +1 -1
- package/lib/agent/host.js +2 -2
- package/lib/agent/host.js.map +1 -1
- package/lib/agent/model.d.ts +38 -6
- package/lib/agent/model.d.ts.map +1 -1
- package/lib/agent/model.js +38 -14
- package/lib/agent/model.js.map +1 -1
- package/lib/agent/prompt-history.d.ts +7 -12
- package/lib/agent/prompt-history.d.ts.map +1 -1
- package/lib/agent/prompt-history.js +10 -31
- package/lib/agent/prompt-history.js.map +1 -1
- package/lib/cards/composition.d.ts +1 -1
- package/lib/cards/composition.d.ts.map +1 -1
- package/lib/cards/composition.js +7 -0
- package/lib/cards/composition.js.map +1 -1
- package/lib/cards/presenter.d.ts.map +1 -1
- package/lib/cards/presenter.js +32 -2
- package/lib/cards/presenter.js.map +1 -1
- package/lib/cards.d.ts +27 -2
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +17 -3
- package/lib/cards.js.map +1 -1
- package/lib/compat/probe.js +1 -1
- package/lib/compat/probe.js.map +1 -1
- package/lib/config.d.ts +10 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +18 -0
- package/lib/config.js.map +1 -1
- package/lib/contracts.d.ts +2 -0
- package/lib/contracts.d.ts.map +1 -1
- package/lib/export.d.ts +12 -0
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +34 -3
- package/lib/export.js.map +1 -1
- package/lib/herdr/client.d.ts +8 -9
- package/lib/herdr/client.d.ts.map +1 -1
- package/lib/herdr/client.js +14 -2
- package/lib/herdr/client.js.map +1 -1
- package/lib/herdr/constants.d.ts +18 -0
- package/lib/herdr/constants.d.ts.map +1 -1
- package/lib/herdr/constants.js +18 -0
- package/lib/herdr/constants.js.map +1 -1
- package/lib/herdr/reporter.d.ts +20 -4
- package/lib/herdr/reporter.d.ts.map +1 -1
- package/lib/herdr/reporter.js +70 -20
- package/lib/herdr/reporter.js.map +1 -1
- package/lib/herdr/state.d.ts +10 -10
- package/lib/herdr/state.d.ts.map +1 -1
- package/lib/herdr/state.js +22 -5
- package/lib/herdr/state.js.map +1 -1
- package/lib/identity.d.ts +0 -2
- package/lib/identity.d.ts.map +1 -1
- package/lib/identity.js +0 -1
- package/lib/identity.js.map +1 -1
- package/lib/index.d.ts +1 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +15 -5
- package/lib/index.js.map +1 -1
- package/lib/input/keymap.d.ts +1 -7
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +3 -11
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/submission.js +2 -2
- package/lib/input/submission.js.map +1 -1
- package/lib/install-skills.d.ts +20 -1
- package/lib/install-skills.d.ts.map +1 -1
- package/lib/install-skills.js +84 -9
- package/lib/install-skills.js.map +1 -1
- package/lib/model-list.d.ts.map +1 -1
- package/lib/model-list.js +17 -5
- package/lib/model-list.js.map +1 -1
- package/lib/queue.d.ts +0 -2
- package/lib/queue.d.ts.map +1 -1
- package/lib/queue.js +1 -1
- package/lib/queue.js.map +1 -1
- package/lib/settings-notice.d.ts +10 -1
- package/lib/settings-notice.d.ts.map +1 -1
- package/lib/settings-notice.js +17 -7
- package/lib/settings-notice.js.map +1 -1
- package/lib/spacing.d.ts +40 -0
- package/lib/spacing.d.ts.map +1 -0
- package/lib/spacing.js +54 -0
- package/lib/spacing.js.map +1 -0
- package/lib/stash/paths.d.ts +19 -10
- package/lib/stash/paths.d.ts.map +1 -1
- package/lib/stash/paths.js +52 -23
- package/lib/stash/paths.js.map +1 -1
- package/lib/stash/schema.d.ts +13 -12
- package/lib/stash/schema.d.ts.map +1 -1
- package/lib/stash/schema.js +11 -9
- package/lib/stash/schema.js.map +1 -1
- package/lib/stash/store.d.ts.map +1 -1
- package/lib/stash/store.js +9 -19
- package/lib/stash/store.js.map +1 -1
- package/lib/stash.d.ts +17 -10
- package/lib/stash.d.ts.map +1 -1
- package/lib/stash.js +31 -20
- package/lib/stash.js.map +1 -1
- package/lib/subagents.d.ts +0 -4
- package/lib/subagents.d.ts.map +1 -1
- package/lib/subagents.js +2 -2
- package/lib/subagents.js.map +1 -1
- package/lib/surface/appearance.d.ts +3 -0
- package/lib/surface/appearance.d.ts.map +1 -1
- package/lib/surface/appearance.js +5 -0
- package/lib/surface/appearance.js.map +1 -1
- package/lib/surface/background-work.d.ts +2 -0
- package/lib/surface/background-work.d.ts.map +1 -1
- package/lib/surface/background-work.js +45 -3
- package/lib/surface/background-work.js.map +1 -1
- package/lib/surface/commands.d.ts +2 -0
- package/lib/surface/commands.d.ts.map +1 -1
- package/lib/surface/commands.js +32 -6
- package/lib/surface/commands.js.map +1 -1
- package/lib/surface/modal-input.d.ts +3 -2
- package/lib/surface/modal-input.d.ts.map +1 -1
- package/lib/surface/modal-input.js +25 -8
- package/lib/surface/modal-input.js.map +1 -1
- package/lib/surface/model-choice.d.ts.map +1 -1
- package/lib/surface/model-choice.js +18 -18
- package/lib/surface/model-choice.js.map +1 -1
- package/lib/surface/preset-choice.d.ts.map +1 -1
- package/lib/surface/preset-choice.js +18 -10
- package/lib/surface/preset-choice.js.map +1 -1
- package/lib/surface/prompt-memory.d.ts +3 -1
- package/lib/surface/prompt-memory.d.ts.map +1 -1
- package/lib/surface/prompt-memory.js +10 -11
- package/lib/surface/prompt-memory.js.map +1 -1
- package/lib/surface/session-lifecycle.d.ts +6 -1
- package/lib/surface/session-lifecycle.d.ts.map +1 -1
- package/lib/surface/session-lifecycle.js +30 -8
- package/lib/surface/session-lifecycle.js.map +1 -1
- package/lib/surface/session-view.d.ts.map +1 -1
- package/lib/surface/session-view.js +1 -3
- package/lib/surface/session-view.js.map +1 -1
- package/lib/surface/staged-turns.d.ts +0 -2
- package/lib/surface/staged-turns.d.ts.map +1 -1
- package/lib/surface/staged-turns.js +37 -6
- package/lib/surface/staged-turns.js.map +1 -1
- package/lib/terminal/external-editor.d.ts +16 -0
- package/lib/terminal/external-editor.d.ts.map +1 -1
- package/lib/terminal/external-editor.js +38 -6
- package/lib/terminal/external-editor.js.map +1 -1
- package/lib/terminal/host-writes.d.ts +15 -2
- package/lib/terminal/host-writes.d.ts.map +1 -1
- package/lib/terminal/host-writes.js +10 -1
- package/lib/terminal/host-writes.js.map +1 -1
- package/lib/terminal/restore.d.ts +1 -2
- package/lib/terminal/restore.d.ts.map +1 -1
- package/lib/terminal/restore.js +1 -9
- package/lib/terminal/restore.js.map +1 -1
- package/lib/terminal/signals.d.ts +0 -1
- package/lib/terminal/signals.d.ts.map +1 -1
- package/lib/terminal/signals.js +1 -1
- package/lib/terminal/signals.js.map +1 -1
- package/lib/terminal/title.d.ts.map +1 -1
- package/lib/terminal/title.js +14 -3
- package/lib/terminal/title.js.map +1 -1
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +12 -1
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/theme-capability.d.ts +0 -2
- package/lib/theme-capability.d.ts.map +1 -1
- package/lib/theme-capability.js +1 -1
- package/lib/theme-capability.js.map +1 -1
- package/lib/theme-defaults.d.ts.map +1 -1
- package/lib/theme-defaults.js +7 -0
- package/lib/theme-defaults.js.map +1 -1
- package/lib/theme-files.d.ts +1 -1
- package/lib/theme-files.d.ts.map +1 -1
- package/lib/theme-files.js +1 -1
- package/lib/theme-files.js.map +1 -1
- package/lib/theme-schema.d.ts +6 -6
- package/lib/theme-settings.d.ts +13 -8
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +17 -3
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +1 -1
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +7 -2
- package/lib/theme-tokens.js.map +1 -1
- package/lib/transcript.d.ts +2 -2
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +9 -4
- package/lib/transcript.js.map +1 -1
- package/lib/ui/dock.d.ts +2 -0
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +18 -3
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/gap.d.ts +28 -0
- package/lib/ui/gap.d.ts.map +1 -0
- package/lib/ui/gap.js +47 -0
- package/lib/ui/gap.js.map +1 -0
- package/lib/ui/gutter.d.ts +25 -0
- package/lib/ui/gutter.d.ts.map +1 -0
- package/lib/ui/gutter.js +31 -0
- package/lib/ui/gutter.js.map +1 -0
- package/lib/ui/layout.d.ts +13 -1
- package/lib/ui/layout.d.ts.map +1 -1
- package/lib/ui/layout.js +32 -6
- package/lib/ui/layout.js.map +1 -1
- package/lib/ui/queue.d.ts +0 -4
- package/lib/ui/queue.d.ts.map +1 -1
- package/lib/ui/queue.js +2 -2
- package/lib/ui/queue.js.map +1 -1
- package/lib/ui/rows.d.ts +0 -8
- package/lib/ui/rows.d.ts.map +1 -1
- package/lib/ui/rows.js +1 -9
- package/lib/ui/rows.js.map +1 -1
- package/lib/ui/stash-picker.d.ts +2 -2
- package/lib/ui/stash-picker.d.ts.map +1 -1
- package/lib/ui/stash-picker.js +3 -3
- package/lib/ui/stash-picker.js.map +1 -1
- package/lib/ui/view/gate-card.d.ts.map +1 -1
- package/lib/ui/view/gate-card.js +4 -1
- package/lib/ui/view/gate-card.js.map +1 -1
- package/lib/ui/view/tool-card.d.ts +17 -2
- package/lib/ui/view/tool-card.d.ts.map +1 -1
- package/lib/ui/view/tool-card.js +40 -8
- package/lib/ui/view/tool-card.js.map +1 -1
- package/lib/ui/view/transcript-message.d.ts +3 -0
- package/lib/ui/view/transcript-message.d.ts.map +1 -1
- package/lib/ui/view/transcript-message.js +8 -1
- package/lib/ui/view/transcript-message.js.map +1 -1
- package/lib/ui/view.d.ts +36 -9
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +90 -32
- package/lib/ui/view.js.map +1 -1
- package/package.json +3 -1
- package/themes/deepseek-blue.yaml +3 -0
- package/themes/violet-orbit.yaml +16 -9
package/lib/input/submission.js
CHANGED
|
@@ -28,9 +28,9 @@ export const LOCAL_COMMAND_DESCRIPTIONS = {
|
|
|
28
28
|
'/stash': 'store the draft typed after it; ctrl+x then s parks the editor',
|
|
29
29
|
'/stash-pop': 'put a stashed draft (newest by default) into the editor and remove it',
|
|
30
30
|
'/stash-apply': 'put a stashed draft (newest by default) into the editor and keep it',
|
|
31
|
-
'/stash-list':
|
|
31
|
+
'/stash-list': 'open the current stash bank; enter pops one',
|
|
32
32
|
'/stash-drop': 'delete a stashed draft (newest by default) without using it',
|
|
33
|
-
'/stash-clear': 'delete every draft
|
|
33
|
+
'/stash-clear': 'delete every draft in the current stash bank after a confirmation',
|
|
34
34
|
'/quit': 'leave and print the resume command',
|
|
35
35
|
'/exit': 'leave and print the resume command',
|
|
36
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/input/submission.ts"],"names":[],"mappings":"AA6CA,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IAC1N,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc;CAC5E,CAAA;AAEV,2EAA2E;AAC3E,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,OAAO,EAAE,oCAAoC;IAC7C,SAAS,EAAE,mDAAmD;IAC9D,QAAQ,EAAE,qFAAqF;IAC/F,SAAS,EAAE,kDAAkD;IAC7D,OAAO,EAAE,6CAA6C;IACtD,YAAY,EAAE,uFAAuF;IACrG,OAAO,EAAE,6CAA6C;IACtD,QAAQ,EAAE,oHAAoH;IAC9H,OAAO,EAAE,oEAAoE;IAC7E,OAAO,EAAE,qDAAqD;IAC9D,MAAM,EAAE,oDAAoD;IAC5D,SAAS,EAAE,kEAAkE;IAC7E,OAAO,EAAE,0EAA0E;IACnF,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE,4DAA4D;IACrE,UAAU,EAAE,wEAAwE;IACpF,SAAS,EAAE,gDAAgD;IAC3D,SAAS,EAAE,iDAAiD;IAC5D,QAAQ,EAAE,8BAA8B;IACxC,SAAS,EAAE,6BAA6B;IACxC,QAAQ,EAAE,gEAAgE;IAC1E,YAAY,EAAE,uEAAuE;IACrF,cAAc,EAAE,qEAAqE;IACrF,aAAa,EAAE,6CAA6C;IAC5D,aAAa,EAAE,6DAA6D;IAC5E,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/input/submission.ts"],"names":[],"mappings":"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"}
|
package/lib/install-skills.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** The command a drift notice names, so the line it prints is the line that runs. */
|
|
2
|
+
export declare const SKILL_UPDATE_COMMAND = "dsh --profile tui install-skills --update";
|
|
1
3
|
export declare class SkillAlreadyExistsError extends Error {
|
|
2
4
|
readonly destination: string;
|
|
3
5
|
constructor(destination: string);
|
|
@@ -7,7 +9,24 @@ export declare class SkillAlreadyExistsError extends Error {
|
|
|
7
9
|
* listed: a skill a reader can see here is one `install-skills` installs, and
|
|
8
10
|
* adding another never means editing the installer.
|
|
9
11
|
*/
|
|
10
|
-
export declare function bundledSkillNames(): string[];
|
|
12
|
+
export declare function bundledSkillNames(bundled?: string): string[];
|
|
13
|
+
/**
|
|
14
|
+
* The installed copies that no longer match what this package ships.
|
|
15
|
+
*
|
|
16
|
+
* Content only, over the bundled file set. The installer chmods its own
|
|
17
|
+
* helpers, so a mode difference is its doing rather than drift, and a file a
|
|
18
|
+
* reader added beside a skill is theirs: one startup line can explain neither,
|
|
19
|
+
* and a line that cries wolf gets read past when it matters.
|
|
20
|
+
*/
|
|
21
|
+
export declare function driftedSkillNames(home?: string, bundled?: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* The one line a startup can spare for an installed skill this build has moved
|
|
24
|
+
* past, or `undefined` when every installed copy still matches.
|
|
25
|
+
*
|
|
26
|
+
* Silence on any failure: a notice is a courtesy, and an unreadable home must
|
|
27
|
+
* not cost a reader the session they launched.
|
|
28
|
+
*/
|
|
29
|
+
export declare function describeSkillDrift(home?: string, bundled?: string): string | undefined;
|
|
11
30
|
/** Install one bundled skill, or replace the installed copy when `update`. */
|
|
12
31
|
export declare function installBundledSkill(name: string, home?: string, update?: boolean): string;
|
|
13
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../src/install-skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../src/install-skills.ts"],"names":[],"mappings":"AAaA,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,8CAA8C,CAAA;AAQ/E,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGzC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAoB,GAAG,MAAM,EAAE,CASzE;AAuBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAkB,EAAE,OAAO,GAAE,MAAoB,GAAG,MAAM,EAAE,CAenG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAkB,EAAE,OAAO,GAAE,MAAoB,GAAG,MAAM,GAAG,SAAS,CAS9G;AA8GD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,EAAE,MAAM,UAAQ,GAAG,MAAM,CAElG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAkB,EAAE,MAAM,UAAQ,EAAE,KAAK,GAAE,SAAS,MAAM,EAAwB,GAAG,MAAM,EAAE,CAyBvI"}
|
package/lib/install-skills.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { chmodSync, cpSync, lstatSync, mkdirSync, mkdtempSync, readdirSync, renameSync, rmSync } from 'node:fs';
|
|
1
|
+
import { chmodSync, cpSync, lstatSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, renameSync, rmSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
const PACKAGE_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
6
6
|
const SKILLS_ROOT = join(PACKAGE_ROOT, '.agents', 'skills');
|
|
7
|
+
/** The user skill root, spelled once: the installer writes it and the drift check reads it. */
|
|
8
|
+
const AGENTS_DIRECTORY = '.agents';
|
|
9
|
+
const SKILLS_DIRECTORY = 'skills';
|
|
7
10
|
/** A bundled helper must keep its execute bit once the archive has stripped it. */
|
|
8
11
|
const HELPER_EXTENSIONS = ['.sh', '.mjs'];
|
|
9
12
|
const EXECUTABLE_MODE = 0o755;
|
|
13
|
+
/** The command a drift notice names, so the line it prints is the line that runs. */
|
|
14
|
+
export const SKILL_UPDATE_COMMAND = 'dsh --profile tui install-skills --update';
|
|
15
|
+
/** Separator the surface's own notices use, so a drift line reads like the rest. */
|
|
16
|
+
const NOTICE_SEPARATOR = ' · ';
|
|
17
|
+
function installedSkillsRoot(home) {
|
|
18
|
+
return join(home, AGENTS_DIRECTORY, SKILLS_DIRECTORY);
|
|
19
|
+
}
|
|
10
20
|
export class SkillAlreadyExistsError extends Error {
|
|
11
21
|
destination;
|
|
12
22
|
constructor(destination) {
|
|
@@ -19,18 +29,84 @@ export class SkillAlreadyExistsError extends Error {
|
|
|
19
29
|
* listed: a skill a reader can see here is one `install-skills` installs, and
|
|
20
30
|
* adding another never means editing the installer.
|
|
21
31
|
*/
|
|
22
|
-
export function bundledSkillNames() {
|
|
23
|
-
const root = lstatSync(
|
|
32
|
+
export function bundledSkillNames(bundled = SKILLS_ROOT) {
|
|
33
|
+
const root = lstatSync(bundled);
|
|
24
34
|
if (!root.isDirectory() || root.isSymbolicLink())
|
|
25
|
-
throw new Error(`invalid bundled skills: ${
|
|
26
|
-
const names = readdirSync(
|
|
35
|
+
throw new Error(`invalid bundled skills: ${bundled}`);
|
|
36
|
+
const names = readdirSync(bundled, { withFileTypes: true })
|
|
27
37
|
.filter(entry => entry.isDirectory() && !entry.isSymbolicLink())
|
|
28
38
|
.map(entry => entry.name)
|
|
29
39
|
.sort();
|
|
30
40
|
if (names.length === 0)
|
|
31
|
-
throw new Error(`no bundled skills: ${
|
|
41
|
+
throw new Error(`no bundled skills: ${bundled}`);
|
|
32
42
|
return names;
|
|
33
43
|
}
|
|
44
|
+
/** Every regular file a skill directory carries, keyed by its relative path. */
|
|
45
|
+
function skillFiles(root) {
|
|
46
|
+
const files = new Map();
|
|
47
|
+
const walk = (directory, prefix) => {
|
|
48
|
+
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
49
|
+
const relative = prefix === '' ? entry.name : prefix + '/' + entry.name;
|
|
50
|
+
const path = join(directory, entry.name);
|
|
51
|
+
if (entry.isDirectory()) {
|
|
52
|
+
walk(path, relative);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// A symlinked member is not content this package shipped, and following
|
|
56
|
+
// one would read whatever it happens to point at.
|
|
57
|
+
if (!entry.isFile())
|
|
58
|
+
continue;
|
|
59
|
+
files.set(relative, readFileSync(path));
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
walk(root, '');
|
|
63
|
+
return files;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The installed copies that no longer match what this package ships.
|
|
67
|
+
*
|
|
68
|
+
* Content only, over the bundled file set. The installer chmods its own
|
|
69
|
+
* helpers, so a mode difference is its doing rather than drift, and a file a
|
|
70
|
+
* reader added beside a skill is theirs: one startup line can explain neither,
|
|
71
|
+
* and a line that cries wolf gets read past when it matters.
|
|
72
|
+
*/
|
|
73
|
+
export function driftedSkillNames(home = homedir(), bundled = SKILLS_ROOT) {
|
|
74
|
+
const skills = installedSkillsRoot(home);
|
|
75
|
+
return bundledSkillNames(bundled).filter(name => {
|
|
76
|
+
const destination = join(skills, name);
|
|
77
|
+
const entry = lstatSync(destination, { throwIfNoEntry: false });
|
|
78
|
+
// Never installed is not drift - a first install is that command's own
|
|
79
|
+
// prompt - and a symlinked copy is one the installer refuses to replace.
|
|
80
|
+
if (entry === undefined || entry.isSymbolicLink() || !entry.isDirectory())
|
|
81
|
+
return false;
|
|
82
|
+
const installed = skillFiles(destination);
|
|
83
|
+
for (const [path, content] of skillFiles(join(bundled, name))) {
|
|
84
|
+
const current = installed.get(path);
|
|
85
|
+
if (current === undefined || !current.equals(content))
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The one line a startup can spare for an installed skill this build has moved
|
|
93
|
+
* past, or `undefined` when every installed copy still matches.
|
|
94
|
+
*
|
|
95
|
+
* Silence on any failure: a notice is a courtesy, and an unreadable home must
|
|
96
|
+
* not cost a reader the session they launched.
|
|
97
|
+
*/
|
|
98
|
+
export function describeSkillDrift(home = homedir(), bundled = SKILLS_ROOT) {
|
|
99
|
+
try {
|
|
100
|
+
const drifted = driftedSkillNames(home, bundled);
|
|
101
|
+
if (drifted.length === 0)
|
|
102
|
+
return undefined;
|
|
103
|
+
return `bundled skills changed since they were installed: ${drifted.join(NOTICE_SEPARATOR)}`
|
|
104
|
+
+ `${NOTICE_SEPARATOR}run ${SKILL_UPDATE_COMMAND}`;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
34
110
|
/** Avoid writing through a pre-existing symlink into an unexpected directory. */
|
|
35
111
|
function ensureDirectory(path) {
|
|
36
112
|
try {
|
|
@@ -166,9 +242,8 @@ export function installBundledSkill(name, home = homedir(), update = false) {
|
|
|
166
242
|
*/
|
|
167
243
|
export function installBundledSkills(home = homedir(), update = false, names = bundledSkillNames()) {
|
|
168
244
|
ensureDirectory(home);
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const skills = join(agents, 'skills');
|
|
245
|
+
ensureDirectory(join(home, AGENTS_DIRECTORY));
|
|
246
|
+
const skills = installedSkillsRoot(home);
|
|
172
247
|
ensureDirectory(skills);
|
|
173
248
|
const destinations = names.map(name => join(skills, name));
|
|
174
249
|
for (const destination of destinations) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../src/install-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../src/install-skills.ts"],"names":[],"mappings":"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"}
|
package/lib/model-list.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-list.d.ts","sourceRoot":"","sources":["../src/model-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"model-list.d.ts","sourceRoot":"","sources":["../src/model-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA2BlD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,IAAI,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAA;CAC9F;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQjF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5F"}
|
package/lib/model-list.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MODEL_CATALOG_GAP_CAUSE, readModelCatalog } from "./agent/model.js";
|
|
2
2
|
/**
|
|
3
3
|
* Column separator between the route and the display name.
|
|
4
4
|
*
|
|
@@ -8,6 +8,18 @@ import { createModelCatalog } from "./agent/model.js";
|
|
|
8
8
|
const FIELD_SEPARATOR = '\t';
|
|
9
9
|
/** Prefix every refusal carries, so a piped run names the command that failed. */
|
|
10
10
|
const FAILURE_PREFIX = 'dsh --profile tui list-models: ';
|
|
11
|
+
/**
|
|
12
|
+
* One refusal per cause of an absent catalog.
|
|
13
|
+
*
|
|
14
|
+
* The reader acts on this line, and the two causes ask for opposite things: an
|
|
15
|
+
* absent service is a plugin to mount, while one that cannot list providers is
|
|
16
|
+
* already mounted and only older than the model directory this command reads.
|
|
17
|
+
*/
|
|
18
|
+
const CATALOG_GAP_MESSAGES = {
|
|
19
|
+
no_llm_service: `${MODEL_CATALOG_GAP_CAUSE.no_llm_service}, so models cannot be listed`,
|
|
20
|
+
llm_without_provider_listing: `${MODEL_CATALOG_GAP_CAUSE.llm_without_provider_listing}, so models cannot be listed; `
|
|
21
|
+
+ 'it predates the model directory this command reads',
|
|
22
|
+
};
|
|
11
23
|
/**
|
|
12
24
|
* Format one line per reachable route, in the picker's own order.
|
|
13
25
|
*
|
|
@@ -37,14 +49,14 @@ export async function runModelList(ctx, exit) {
|
|
|
37
49
|
process.stderr.write(`${FAILURE_PREFIX}${message}\n`);
|
|
38
50
|
exit(1);
|
|
39
51
|
};
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
fail(
|
|
52
|
+
const reading = readModelCatalog(ctx);
|
|
53
|
+
if (reading.kind === 'gap') {
|
|
54
|
+
fail(CATALOG_GAP_MESSAGES[reading.gap]);
|
|
43
55
|
return;
|
|
44
56
|
}
|
|
45
57
|
let lines;
|
|
46
58
|
try {
|
|
47
|
-
lines = await modelListLines(catalog);
|
|
59
|
+
lines = await modelListLines(reading.catalog);
|
|
48
60
|
}
|
|
49
61
|
catch (error) {
|
|
50
62
|
fail(`could not list models: ${error instanceof Error ? error.message : String(error)}`);
|
package/lib/model-list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-list.js","sourceRoot":"","sources":["../src/model-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model-list.js","sourceRoot":"","sources":["../src/model-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAwB,MAAM,kBAAkB,CAAA;AAElG;;;;;GAKG;AACH,MAAM,eAAe,GAAG,IAAI,CAAA;AAE5B,kFAAkF;AAClF,MAAM,cAAc,GAAG,iCAAiC,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAoC;IAC5D,cAAc,EAAE,GAAG,uBAAuB,CAAC,cAAc,8BAA8B;IACvF,4BAA4B,EAAE,GAAG,uBAAuB,CAAC,4BAA4B,gCAAgC;UACjH,oDAAoD;CACzD,CAAA;AAeD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,eAAe,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,IAA4B;IAC3E,MAAM,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,GAAG,OAAO,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QACvC,OAAM;IACR,CAAC;IACD,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxF,OAAM;IACR,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,IAAI,CAAC,CAAC,CAAC,CAAA;AACT,CAAC"}
|
package/lib/queue.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
-
/** The reader's own prompts still waiting in one inbox projection state. */
|
|
3
|
-
export declare function promptsOf(state: unknown): readonly string[];
|
|
4
2
|
/** The prompts one session's agent has not taken yet. */
|
|
5
3
|
export declare function pendingPrompts(ctx: Context, session: unknown): readonly string[];
|
|
6
4
|
//# sourceMappingURL=queue.d.ts.map
|
package/lib/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAoElD,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAEhF"}
|
package/lib/queue.js
CHANGED
|
@@ -43,7 +43,7 @@ function textOf(message) {
|
|
|
43
43
|
return texts.length === 0 ? NO_TEXT : texts.join('\n');
|
|
44
44
|
}
|
|
45
45
|
/** The reader's own prompts still waiting in one inbox projection state. */
|
|
46
|
-
|
|
46
|
+
function promptsOf(state) {
|
|
47
47
|
const inbox = asRecord(state);
|
|
48
48
|
if (inbox === undefined)
|
|
49
49
|
return [];
|
package/lib/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD;;;;;;;;;GASG;AAEH,2FAA2F;AAC3F,MAAM,OAAO,GAAG,WAAW,CAAA;AAE3B;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAA;AAEnD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnG,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,OAAgC;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM,CAAA;AAClD,CAAC;AAED,8FAA8F;AAC9F,SAAS,MAAM,CAAC,OAAgC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QACxE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AAED,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD;;;;;;;;;GASG;AAEH,2FAA2F;AAC3F,MAAM,OAAO,GAAG,WAAW,CAAA;AAE3B;;;;;GAKG;AACH,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,CAAU,CAAA;AAEnD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnG,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,OAAgC;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM,CAAA;AAClD,CAAC;AAED,8FAA8F;AAC9F,SAAS,MAAM,CAAC,OAAgC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QACxE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClC,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAQ;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAAE,SAAQ;YAC1D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,OAAgB;IAC3D,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AACvF,CAAC"}
|
package/lib/settings-notice.d.ts
CHANGED
|
@@ -4,7 +4,11 @@ export type NoticeSink = (message: string) => void;
|
|
|
4
4
|
export interface DeferredNotice {
|
|
5
5
|
/** Print through `sink` from now on, starting with anything held back. */
|
|
6
6
|
open(sink: NoticeSink): void;
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Print the notice now, or hold it until {@link DeferredNotice.open}.
|
|
9
|
+
*
|
|
10
|
+
* A message the notice just carried is dropped rather than posted again.
|
|
11
|
+
*/
|
|
8
12
|
post(message: string): void;
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
@@ -19,6 +23,11 @@ export interface DeferredNotice {
|
|
|
19
23
|
* wrong at once — a refused section and the themes beside it — and showing one of
|
|
20
24
|
* them would leave the reader fixing what they were told about while the rest
|
|
21
25
|
* waited for a restart.
|
|
26
|
+
*
|
|
27
|
+
* A message repeating the one before it is dropped, because one write can be read
|
|
28
|
+
* twice: the settings service reports a section and the document it came from
|
|
29
|
+
* separately, and the reader watching a broken file would otherwise watch the same
|
|
30
|
+
* refusal collect a row per read until the transcript had nothing else on it.
|
|
22
31
|
*/
|
|
23
32
|
export declare function createDeferredNotice(): DeferredNotice;
|
|
24
33
|
//# sourceMappingURL=settings-notice.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-notice.d.ts","sourceRoot":"","sources":["../src/settings-notice.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAElD,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B
|
|
1
|
+
{"version":3,"file":"settings-notice.d.ts","sourceRoot":"","sources":["../src/settings-notice.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAElD,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAoBrD"}
|
package/lib/settings-notice.js
CHANGED
|
@@ -10,23 +10,33 @@
|
|
|
10
10
|
* wrong at once — a refused section and the themes beside it — and showing one of
|
|
11
11
|
* them would leave the reader fixing what they were told about while the rest
|
|
12
12
|
* waited for a restart.
|
|
13
|
+
*
|
|
14
|
+
* A message repeating the one before it is dropped, because one write can be read
|
|
15
|
+
* twice: the settings service reports a section and the document it came from
|
|
16
|
+
* separately, and the reader watching a broken file would otherwise watch the same
|
|
17
|
+
* refusal collect a row per read until the transcript had nothing else on it.
|
|
13
18
|
*/
|
|
14
19
|
export function createDeferredNotice() {
|
|
15
20
|
let sink;
|
|
16
21
|
const held = [];
|
|
22
|
+
let last;
|
|
23
|
+
const post = (message) => {
|
|
24
|
+
if (message === last)
|
|
25
|
+
return;
|
|
26
|
+
last = message;
|
|
27
|
+
if (sink === undefined) {
|
|
28
|
+
held.push(message);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
sink(message);
|
|
32
|
+
};
|
|
17
33
|
return {
|
|
18
34
|
open(next) {
|
|
19
35
|
sink = next;
|
|
20
36
|
for (const message of held.splice(0))
|
|
21
37
|
next(message);
|
|
22
38
|
},
|
|
23
|
-
post
|
|
24
|
-
if (sink === undefined) {
|
|
25
|
-
held.push(message);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
sink(message);
|
|
29
|
-
},
|
|
39
|
+
post,
|
|
30
40
|
};
|
|
31
41
|
}
|
|
32
42
|
//# sourceMappingURL=settings-notice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-notice.js","sourceRoot":"","sources":["../src/settings-notice.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-notice.js","sourceRoot":"","sources":["../src/settings-notice.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,IAA4B,CAAA;IAChC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,IAAwB,CAAA;IAC5B,MAAM,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE;QACrC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAM;QAC5B,IAAI,GAAG,OAAO,CAAA;QACd,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,CAAA;IACf,CAAC,CAAA;IACD,OAAO;QACL,IAAI,CAAC,IAAI;YACP,IAAI,GAAG,IAAI,CAAA;YACX,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACrD,CAAC;QACD,IAAI;KACL,CAAA;AACH,CAAC"}
|
package/lib/spacing.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The air the surface keeps around what it shows.
|
|
3
|
+
*
|
|
4
|
+
* A token names a shade or a glyph, so how much room a message is given is not
|
|
5
|
+
* something a theme can carry: it is layout the reader tunes once for their own
|
|
6
|
+
* terminal, and the same read feeds the surface's own edges and every gap
|
|
7
|
+
* between the things it draws.
|
|
8
|
+
*/
|
|
9
|
+
/** What one gap or edge may ask for, in rows or columns. */
|
|
10
|
+
export interface Spacing {
|
|
11
|
+
/** Columns of air at the surface's left and right edges. */
|
|
12
|
+
readonly padding: number;
|
|
13
|
+
/** Blank rows above and below a prompt or a reply card. */
|
|
14
|
+
readonly messages: number;
|
|
15
|
+
/** Blank rows where a step of a turn opens, so a thought and the calls it made read as one group. */
|
|
16
|
+
readonly steps: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The widest gap or edge the reader may ask for.
|
|
20
|
+
*
|
|
21
|
+
* Past a few rows the break stops reading as air between two things and starts
|
|
22
|
+
* reading as a hole the reader has to scroll past on every message.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MAX_SPACING = 3;
|
|
25
|
+
/**
|
|
26
|
+
* The shipped spacing: one column at the edges and one row at a break.
|
|
27
|
+
*
|
|
28
|
+
* Framed objects that touch the terminal's edge, or each other, read as one
|
|
29
|
+
* wall of rows; a single column and a single row are what separate them
|
|
30
|
+
* without spending the rows a message needs to be read in.
|
|
31
|
+
*/
|
|
32
|
+
export declare const DEFAULT_SPACING: Spacing;
|
|
33
|
+
/**
|
|
34
|
+
* The `spacing:` block as the reader wrote it.
|
|
35
|
+
*
|
|
36
|
+
* Absent fields keep the shipped value, so a reader who wants only the gaps
|
|
37
|
+
* turned off writes one line rather than the whole block.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseSpacing(raw: unknown): Spacing;
|
|
40
|
+
//# sourceMappingURL=spacing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../src/spacing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,OAAO;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,qGAAqG;IACrG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,OAA+C,CAAA;AAa7E;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAWlD"}
|
package/lib/spacing.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The air the surface keeps around what it shows.
|
|
3
|
+
*
|
|
4
|
+
* A token names a shade or a glyph, so how much room a message is given is not
|
|
5
|
+
* something a theme can carry: it is layout the reader tunes once for their own
|
|
6
|
+
* terminal, and the same read feeds the surface's own edges and every gap
|
|
7
|
+
* between the things it draws.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The widest gap or edge the reader may ask for.
|
|
11
|
+
*
|
|
12
|
+
* Past a few rows the break stops reading as air between two things and starts
|
|
13
|
+
* reading as a hole the reader has to scroll past on every message.
|
|
14
|
+
*/
|
|
15
|
+
export const MAX_SPACING = 3;
|
|
16
|
+
/**
|
|
17
|
+
* The shipped spacing: one column at the edges and one row at a break.
|
|
18
|
+
*
|
|
19
|
+
* Framed objects that touch the terminal's edge, or each other, read as one
|
|
20
|
+
* wall of rows; a single column and a single row are what separate them
|
|
21
|
+
* without spending the rows a message needs to be read in.
|
|
22
|
+
*/
|
|
23
|
+
export const DEFAULT_SPACING = { padding: 1, messages: 1, steps: 1 };
|
|
24
|
+
/** The fields the `spacing:` block declares, so a misspelling is refused rather than ignored. */
|
|
25
|
+
const SPACING_FIELDS = new Set(['padding', 'messages', 'steps']);
|
|
26
|
+
/** One count as the reader wrote it. */
|
|
27
|
+
function count(value, field) {
|
|
28
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0 || value > MAX_SPACING) {
|
|
29
|
+
throw new Error('spacing.' + field + ' must be an integer between 0 and ' + MAX_SPACING);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The `spacing:` block as the reader wrote it.
|
|
35
|
+
*
|
|
36
|
+
* Absent fields keep the shipped value, so a reader who wants only the gaps
|
|
37
|
+
* turned off writes one line rather than the whole block.
|
|
38
|
+
*/
|
|
39
|
+
export function parseSpacing(raw) {
|
|
40
|
+
if (raw === undefined)
|
|
41
|
+
return DEFAULT_SPACING;
|
|
42
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
43
|
+
throw new Error('spacing must be a mapping of counts');
|
|
44
|
+
const block = raw;
|
|
45
|
+
const stray = Object.keys(block).filter(field => !SPACING_FIELDS.has(field));
|
|
46
|
+
if (stray.length > 0)
|
|
47
|
+
throw new Error('unknown spacing field' + (stray.length === 1 ? '' : 's') + ': ' + stray.join(', '));
|
|
48
|
+
return {
|
|
49
|
+
padding: block.padding === undefined ? DEFAULT_SPACING.padding : count(block.padding, 'padding'),
|
|
50
|
+
messages: block.messages === undefined ? DEFAULT_SPACING.messages : count(block.messages, 'messages'),
|
|
51
|
+
steps: block.steps === undefined ? DEFAULT_SPACING.steps : count(block.steps, 'steps'),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=spacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.js","sourceRoot":"","sources":["../src/spacing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA;AAE5B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAE7E,iGAAiG;AACjG,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAErF,wCAAwC;AACxC,SAAS,KAAK,CAAC,KAAc,EAAE,KAAa;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,oCAAoC,GAAG,WAAW,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,eAAe,CAAA;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACzH,MAAM,KAAK,GAAG,GAA8B,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1H,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;QAChG,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC;QACrG,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;KACvF,CAAA;AACH,CAAC"}
|
package/lib/stash/paths.d.ts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Environment variable that moves the harness home, matching the launcher. */
|
|
2
|
+
export declare const DSH_HOME_ENV = "DSH_HOME";
|
|
3
|
+
/** A bank follows the current directory by default; session mode keeps drafts private to one session. */
|
|
4
|
+
export declare const DEFAULT_STASH_SCOPE: "path";
|
|
5
|
+
export declare const STASH_SCOPES: readonly ["path", "session"];
|
|
6
|
+
export type StashScope = typeof STASH_SCOPES[number];
|
|
7
|
+
/** The stash file for one scope owner. */
|
|
2
8
|
export interface StashPaths {
|
|
3
|
-
/**
|
|
9
|
+
/** Exact scope owner, retained in the on-disk sessionId field. */
|
|
4
10
|
readonly sessionId: string;
|
|
5
|
-
/** Flattened
|
|
11
|
+
/** Flattened owner id, used as the on-disk key. */
|
|
6
12
|
readonly key: string;
|
|
7
|
-
/** JSON file holding this
|
|
13
|
+
/** JSON file holding this bank's stash entries. */
|
|
8
14
|
readonly file: string;
|
|
9
15
|
}
|
|
10
|
-
export declare function sanitizeSessionId(sessionId: string): string;
|
|
16
|
+
export declare function sanitizeSessionId(sessionId: string, version?: string): string;
|
|
11
17
|
/**
|
|
12
18
|
* The directory the harness keeps its own state in.
|
|
13
19
|
*
|
|
14
|
-
* DSH_HOME is the one thing that moves that directory,
|
|
15
|
-
*
|
|
16
|
-
* out of a reader's real home
|
|
20
|
+
* DSH_HOME is the one thing that moves that directory, so every reader resolves it
|
|
21
|
+
* here: the stash bank, the themes, and the prompt history all write under the
|
|
22
|
+
* answer, and a scratch home only keeps state out of a reader's real home while
|
|
23
|
+
* they agree on it. A blank override is treated as unset, because resolving to the
|
|
24
|
+
* working directory would scatter private state into whatever tree the reader
|
|
25
|
+
* happened to start from.
|
|
17
26
|
*/
|
|
18
27
|
export declare function dshHomeDir(env?: NodeJS.ProcessEnv, home?: string): string;
|
|
19
|
-
/** The root every
|
|
28
|
+
/** The root every bank's stash file sits under. */
|
|
20
29
|
export declare function stashBaseDir(env?: NodeJS.ProcessEnv, home?: string): string;
|
|
21
|
-
export declare function resolveStashPaths(sessionId: string, baseDir?: string): StashPaths;
|
|
30
|
+
export declare function resolveStashPaths(sessionId: string, baseDir?: string, scope?: StashScope): StashPaths;
|
|
22
31
|
//# sourceMappingURL=paths.d.ts.map
|
package/lib/stash/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/stash/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/stash/paths.ts"],"names":[],"mappings":"AAgBA,+EAA+E;AAC/E,eAAO,MAAM,YAAY,aAAa,CAAA;AAKtC,yGAAyG;AACzG,eAAO,MAAM,mBAAmB,EAAG,MAAe,CAAA;AAClD,eAAO,MAAM,YAAY,8BAA4C,CAAA;AACrE,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AA4BpD,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAuBD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAmC,GAAG,MAAM,CAOzG;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAIjG;AAkBD,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEnG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAuB,EAAE,KAAK,GAAE,UAAsB,GAAG,UAAU,CAGhI"}
|