@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/stash/paths.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
// Disk layout for prompt stashes.
|
|
2
2
|
//
|
|
3
|
-
// A bank
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// flattened into a filename-safe key that stays human-readable in the agent
|
|
7
|
-
// directory.
|
|
3
|
+
// A bank follows either the absolute working directory or one session. The
|
|
4
|
+
// distinct key versions prevent an absolute directory from ever colliding with
|
|
5
|
+
// a session id, while both identifiers stay readable under the stash directory.
|
|
8
6
|
//
|
|
9
7
|
// Readability cannot be bought with injectivity: a separator made of hyphens
|
|
10
|
-
// cannot be told apart from a hyphen inside
|
|
11
|
-
// id can land on a name a shorter id already owns. Two
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
// ids collide in the label, never in the file.
|
|
8
|
+
// cannot be told apart from a hyphen inside an owner id, and truncating a long
|
|
9
|
+
// id can land on a name a shorter id already owns. Two distinct owners sharing
|
|
10
|
+
// one bank would expose drafts, so every key ends with a digest of the exact id. The readable part is then only a label: two distinct
|
|
11
|
+
// identifiers collide in the label, never in the file.
|
|
15
12
|
import { createHash } from 'node:crypto';
|
|
16
13
|
import { homedir } from 'node:os';
|
|
17
14
|
import path from 'node:path';
|
|
15
|
+
/** Environment variable that moves the harness home, matching the launcher. */
|
|
16
|
+
export const DSH_HOME_ENV = 'DSH_HOME';
|
|
18
17
|
/** The directory `DSH_HOME` points at when the environment names none. */
|
|
19
18
|
const DEFAULT_DSH_HOME_DIR = '.dsh';
|
|
19
|
+
/** A bank follows the current directory by default; session mode keeps drafts private to one session. */
|
|
20
|
+
export const DEFAULT_STASH_SCOPE = 'path';
|
|
21
|
+
export const STASH_SCOPES = [DEFAULT_STASH_SCOPE, 'session'];
|
|
22
|
+
/** The character a hand-written `DSH_HOME` leads with when it names the OS home. */
|
|
23
|
+
const HOME_TILDE = '~';
|
|
24
|
+
/** What may follow that character and still mean a home directory, on either platform. */
|
|
25
|
+
const HOME_TILDE_SEPARATORS = ['/', '\\'];
|
|
20
26
|
/** The subtree of `DSH_HOME` this surface owns. */
|
|
21
27
|
const STASH_DIR_NAME = 'tui-stash';
|
|
22
28
|
// POSIX filenames may not contain "/" or NUL, and everything else is legal, so
|
|
@@ -25,8 +31,8 @@ const STASH_DIR_NAME = 'tui-stash';
|
|
|
25
31
|
// common 255-byte filename limit.
|
|
26
32
|
const SANITIZE_MAX_LENGTH = 200;
|
|
27
33
|
const SEPARATOR = '--';
|
|
28
|
-
const
|
|
29
|
-
const
|
|
34
|
+
const SESSION_KEY_FORMAT_VERSION = 'v2';
|
|
35
|
+
const PATH_KEY_FORMAT_VERSION = 'v3';
|
|
30
36
|
const ESCAPE_CHARACTER = '%';
|
|
31
37
|
const ESCAPED_ESCAPE_CHARACTER = '%25';
|
|
32
38
|
const ESCAPED_SEPARATOR = '%2D%2D';
|
|
@@ -55,30 +61,53 @@ function truncateToUtf8Bytes(value, maxBytes) {
|
|
|
55
61
|
}
|
|
56
62
|
return result;
|
|
57
63
|
}
|
|
58
|
-
export function sanitizeSessionId(sessionId) {
|
|
64
|
+
export function sanitizeSessionId(sessionId, version = SESSION_KEY_FORMAT_VERSION) {
|
|
65
|
+
const keyPrefix = `${version}${SEPARATOR}`;
|
|
59
66
|
const readable = sessionId.split('/').filter(Boolean).map(escapeSegment).join(SEPARATOR);
|
|
60
67
|
const digest = createHash(HASH_ALGORITHM).update(sessionId, 'utf8').digest('hex').slice(0, HASH_LENGTH);
|
|
61
68
|
const suffix = `${SEPARATOR}${digest}`;
|
|
62
|
-
const budget = SANITIZE_MAX_LENGTH - Buffer.byteLength(
|
|
63
|
-
return `${
|
|
69
|
+
const budget = SANITIZE_MAX_LENGTH - Buffer.byteLength(keyPrefix) - Buffer.byteLength(suffix);
|
|
70
|
+
return `${keyPrefix}${truncateToUtf8Bytes(readable, Math.max(budget, 0))}${suffix}`;
|
|
64
71
|
}
|
|
65
72
|
/**
|
|
66
73
|
* The directory the harness keeps its own state in.
|
|
67
74
|
*
|
|
68
|
-
* DSH_HOME is the one thing that moves that directory,
|
|
69
|
-
*
|
|
70
|
-
* out of a reader's real home
|
|
75
|
+
* DSH_HOME is the one thing that moves that directory, so every reader resolves it
|
|
76
|
+
* here: the stash bank, the themes, and the prompt history all write under the
|
|
77
|
+
* answer, and a scratch home only keeps state out of a reader's real home while
|
|
78
|
+
* they agree on it. A blank override is treated as unset, because resolving to the
|
|
79
|
+
* working directory would scatter private state into whatever tree the reader
|
|
80
|
+
* happened to start from.
|
|
71
81
|
*/
|
|
72
82
|
export function dshHomeDir(env = process.env, home = homedir()) {
|
|
73
|
-
const configured = env
|
|
74
|
-
|
|
83
|
+
const configured = env[DSH_HOME_ENV]?.trim();
|
|
84
|
+
if (configured === undefined || configured === '')
|
|
85
|
+
return path.join(home, DEFAULT_DSH_HOME_DIR);
|
|
86
|
+
return expandHome(configured, home);
|
|
75
87
|
}
|
|
76
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Expand a hand-written leading `~` into the caller's home.
|
|
90
|
+
*
|
|
91
|
+
* The value arrives from the environment rather than from a shell, so nothing has
|
|
92
|
+
* expanded it yet. `~user` and an interior `~` are ordinary path text everywhere
|
|
93
|
+
* but a shell, and rewriting them would move a directory the reader named exactly;
|
|
94
|
+
* with no home to expand into the value stays as written, because joining a blank
|
|
95
|
+
* home would land the state in the process's working directory by accident.
|
|
96
|
+
*/
|
|
97
|
+
function expandHome(value, home) {
|
|
98
|
+
if (home === '')
|
|
99
|
+
return value;
|
|
100
|
+
if (value === HOME_TILDE)
|
|
101
|
+
return home;
|
|
102
|
+
const separator = HOME_TILDE_SEPARATORS.find(candidate => value.startsWith(HOME_TILDE + candidate));
|
|
103
|
+
return separator === undefined ? value : path.join(home, value.slice(HOME_TILDE.length + separator.length));
|
|
104
|
+
}
|
|
105
|
+
/** The root every bank's stash file sits under. */
|
|
77
106
|
export function stashBaseDir(env = process.env, home = homedir()) {
|
|
78
107
|
return path.join(dshHomeDir(env, home), STASH_DIR_NAME);
|
|
79
108
|
}
|
|
80
|
-
export function resolveStashPaths(sessionId, baseDir = stashBaseDir()) {
|
|
81
|
-
const key = sanitizeSessionId(sessionId);
|
|
109
|
+
export function resolveStashPaths(sessionId, baseDir = stashBaseDir(), scope = 'session') {
|
|
110
|
+
const key = sanitizeSessionId(sessionId, scope === 'path' ? PATH_KEY_FORMAT_VERSION : SESSION_KEY_FORMAT_VERSION);
|
|
82
111
|
return { sessionId, key, file: path.join(baseDir, `${key}.json`) };
|
|
83
112
|
}
|
|
84
113
|
//# sourceMappingURL=paths.js.map
|
package/lib/stash/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/stash/paths.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/stash/paths.ts"],"names":[],"mappings":"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"}
|
package/lib/stash/schema.d.ts
CHANGED
|
@@ -15,31 +15,32 @@ export interface StashEntry {
|
|
|
15
15
|
export interface StashFile {
|
|
16
16
|
readonly version: typeof STASH_SCHEMA_VERSION;
|
|
17
17
|
/**
|
|
18
|
-
* The exact session
|
|
18
|
+
* The exact bank owner, either a session id or an absolute directory.
|
|
19
19
|
*
|
|
20
|
-
* The key alone cannot prove ownership:
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* deleted as this one's.
|
|
20
|
+
* The key alone cannot prove ownership: two distinct owners can share a
|
|
21
|
+
* flattened label. Comparing this id on every read prevents one bank from
|
|
22
|
+
* reading or deleting another bank's drafts.
|
|
24
23
|
*/
|
|
25
24
|
readonly sessionId: string;
|
|
26
|
-
readonly createdAt: number;
|
|
27
|
-
readonly updatedAt: number;
|
|
28
25
|
/** Newest first: `entries[0]` is `stash@{0}`. */
|
|
29
26
|
readonly entries: readonly StashEntry[];
|
|
30
27
|
}
|
|
31
28
|
export type Clock = () => number;
|
|
32
29
|
export declare const createNewId: () => string;
|
|
33
|
-
export declare function createEmptyStashFile(sessionId: string
|
|
30
|
+
export declare function createEmptyStashFile(sessionId: string): StashFile;
|
|
34
31
|
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
35
32
|
export declare function normalizeEntry(raw: unknown): StashEntry | undefined;
|
|
36
33
|
/**
|
|
37
34
|
* Read one stash file, or nothing when it is not this surface's current format.
|
|
38
35
|
*
|
|
39
|
-
* Strict on purpose: a duplicate id, a
|
|
40
|
-
* is corruption the store quarantines rather than a shape to repair,
|
|
41
|
-
* silently repaired file can resurrect entries the reader thought
|
|
42
|
-
* or hand another session's drafts to this one.
|
|
36
|
+
* Strict on purpose: a duplicate id, a malformed entry timestamp, or a foreign
|
|
37
|
+
* session is corruption the store quarantines rather than a shape to repair,
|
|
38
|
+
* because a silently repaired file can resurrect entries the reader thought
|
|
39
|
+
* they dropped — or hand another session's drafts to this one.
|
|
40
|
+
*
|
|
41
|
+
* Keys this format does not name are ignored, which is what lets a bank an
|
|
42
|
+
* older build wrote keep loading: it persisted file-level timestamps nothing
|
|
43
|
+
* ever read, and refusing them would quarantine drafts that are still valid.
|
|
43
44
|
*/
|
|
44
45
|
export declare function parseStashFile(raw: unknown): StashFile | undefined;
|
|
45
46
|
export interface ResolvedEntry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/stash/schema.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,UAAY,CAAA;AAQ9C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,oBAAoB,CAAA;IAC7C
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/stash/schema.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,UAAY,CAAA;AAQ9C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,oBAAoB,CAAA;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CACxC;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAA;AAEhC,eAAO,MAAM,WAAW,QAAO,MAAsB,CAAA;AAErD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAEjE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAOnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAalE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,aAAa,GAAG,SAAS,CAc3B"}
|
package/lib/stash/schema.js
CHANGED
|
@@ -31,8 +31,8 @@ export function sanitizeStashText(text) {
|
|
|
31
31
|
return stripControlCharacters(text);
|
|
32
32
|
}
|
|
33
33
|
export const createNewId = () => randomUUID();
|
|
34
|
-
export function createEmptyStashFile(sessionId
|
|
35
|
-
return { version: STASH_SCHEMA_VERSION, sessionId,
|
|
34
|
+
export function createEmptyStashFile(sessionId) {
|
|
35
|
+
return { version: STASH_SCHEMA_VERSION, sessionId, entries: [] };
|
|
36
36
|
}
|
|
37
37
|
export function isRecord(value) {
|
|
38
38
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -55,18 +55,20 @@ export function normalizeEntry(raw) {
|
|
|
55
55
|
/**
|
|
56
56
|
* Read one stash file, or nothing when it is not this surface's current format.
|
|
57
57
|
*
|
|
58
|
-
* Strict on purpose: a duplicate id, a
|
|
59
|
-
* is corruption the store quarantines rather than a shape to repair,
|
|
60
|
-
* silently repaired file can resurrect entries the reader thought
|
|
61
|
-
* or hand another session's drafts to this one.
|
|
58
|
+
* Strict on purpose: a duplicate id, a malformed entry timestamp, or a foreign
|
|
59
|
+
* session is corruption the store quarantines rather than a shape to repair,
|
|
60
|
+
* because a silently repaired file can resurrect entries the reader thought
|
|
61
|
+
* they dropped — or hand another session's drafts to this one.
|
|
62
|
+
*
|
|
63
|
+
* Keys this format does not name are ignored, which is what lets a bank an
|
|
64
|
+
* older build wrote keep loading: it persisted file-level timestamps nothing
|
|
65
|
+
* ever read, and refusing them would quarantine drafts that are still valid.
|
|
62
66
|
*/
|
|
63
67
|
export function parseStashFile(raw) {
|
|
64
68
|
if (!isRecord(raw) || raw.version !== STASH_SCHEMA_VERSION)
|
|
65
69
|
return undefined;
|
|
66
70
|
if (typeof raw.sessionId !== 'string')
|
|
67
71
|
return undefined;
|
|
68
|
-
if (!isValidTimestamp(raw.createdAt) || !isValidTimestamp(raw.updatedAt))
|
|
69
|
-
return undefined;
|
|
70
72
|
if (!Array.isArray(raw.entries))
|
|
71
73
|
return undefined;
|
|
72
74
|
const entries = [];
|
|
@@ -78,7 +80,7 @@ export function parseStashFile(raw) {
|
|
|
78
80
|
ids.add(entry.id);
|
|
79
81
|
entries.push(entry);
|
|
80
82
|
}
|
|
81
|
-
return { version: STASH_SCHEMA_VERSION, sessionId: raw.sessionId,
|
|
83
|
+
return { version: STASH_SCHEMA_VERSION, sessionId: raw.sessionId, entries };
|
|
82
84
|
}
|
|
83
85
|
/**
|
|
84
86
|
* Resolve a selector against newest-first entries.
|
package/lib/stash/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/stash/schema.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAErC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAA;AAE9C,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAC/B,MAAM,gBAAgB,GAAG,+BAA+B,CAAA;AACxD,MAAM,wBAAwB,GAAG,QAAQ,CAAA;AACzC,MAAM,wBAAwB,GAAG,wBAAwB,CAAA;AACzD,MAAM,uBAAuB,GAAG,4BAA4B,CAAA;AAE5D,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,MAAM,IAAI,mBAAmB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;AACtE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,qBAAqB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACvG,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;AACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/stash/schema.ts"],"names":[],"mappings":"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"}
|
package/lib/stash/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/stash/store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/stash/store.ts"],"names":[],"mappings":"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"}
|
package/lib/stash/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// StashStore: on-disk CRUD for
|
|
1
|
+
// StashStore: on-disk CRUD for entries owned by one path or session.
|
|
2
2
|
//
|
|
3
3
|
// Entries are stored newest-first (`entries[0]` is `stash@{0}`), mirroring git's
|
|
4
4
|
// index-0-is-tip convention. Every mutation re-reads the file inside an
|
|
@@ -57,7 +57,7 @@ export class StashStore {
|
|
|
57
57
|
this.paths = paths;
|
|
58
58
|
this.now = now;
|
|
59
59
|
this.write = write;
|
|
60
|
-
this.file = loaded.kind === 'ready' ? loaded.file : createEmptyStashFile(paths.sessionId
|
|
60
|
+
this.file = loaded.kind === 'ready' ? loaded.file : createEmptyStashFile(paths.sessionId);
|
|
61
61
|
this.corruptRecovery =
|
|
62
62
|
loaded.kind === 'corrupt' && loaded.quarantinedTo !== undefined
|
|
63
63
|
? { path: loaded.quarantinedTo, syncFailed: loaded.quarantineSyncFailed }
|
|
@@ -95,11 +95,7 @@ export class StashStore {
|
|
|
95
95
|
if (this.file.entries.some(entry => entry.id === id))
|
|
96
96
|
throw new Error(DUPLICATE_STASH_ID_MESSAGE);
|
|
97
97
|
const entry = { id, text, createdAt: input.createdAt ?? this.now() };
|
|
98
|
-
const next = {
|
|
99
|
-
...this.file,
|
|
100
|
-
updatedAt: entry.createdAt,
|
|
101
|
-
entries: [entry, ...this.file.entries],
|
|
102
|
-
};
|
|
98
|
+
const next = { ...this.file, entries: [entry, ...this.file.entries] };
|
|
103
99
|
return this.persistMutation(next, { entry, index: 0 });
|
|
104
100
|
});
|
|
105
101
|
}
|
|
@@ -120,7 +116,6 @@ export class StashStore {
|
|
|
120
116
|
return { didPersist: false, result: undefined };
|
|
121
117
|
const next = {
|
|
122
118
|
...this.file,
|
|
123
|
-
updatedAt: this.now(),
|
|
124
119
|
entries: this.file.entries.filter((_, index) => index !== resolved.index),
|
|
125
120
|
};
|
|
126
121
|
return this.persistMutation(next, resolved);
|
|
@@ -141,11 +136,7 @@ export class StashStore {
|
|
|
141
136
|
const removed = this.file.entries.length - kept.length;
|
|
142
137
|
if (removed === 0)
|
|
143
138
|
return { didPersist: false, result: 0 };
|
|
144
|
-
const next = {
|
|
145
|
-
...createEmptyStashFile(this.paths.sessionId, this.now()),
|
|
146
|
-
updatedAt: this.now(),
|
|
147
|
-
entries: kept,
|
|
148
|
-
};
|
|
139
|
+
const next = { ...createEmptyStashFile(this.paths.sessionId), entries: kept };
|
|
149
140
|
return this.persistMutation(next, removed);
|
|
150
141
|
});
|
|
151
142
|
}
|
|
@@ -156,7 +147,6 @@ export class StashStore {
|
|
|
156
147
|
return { didPersist: false, result: undefined };
|
|
157
148
|
const next = {
|
|
158
149
|
...this.file,
|
|
159
|
-
updatedAt: this.now(),
|
|
160
150
|
entries: this.file.entries.filter((_, position) => position !== index),
|
|
161
151
|
};
|
|
162
152
|
return this.persistMutation(next, { entry: found, index });
|
|
@@ -170,7 +160,7 @@ export class StashStore {
|
|
|
170
160
|
return { didPersist: true, result };
|
|
171
161
|
}
|
|
172
162
|
async reloadFresh() {
|
|
173
|
-
const loaded = await readCurrentStashFile(this.filePath, this.paths.sessionId
|
|
163
|
+
const loaded = await readCurrentStashFile(this.filePath, this.paths.sessionId);
|
|
174
164
|
if (loaded.kind === 'ready') {
|
|
175
165
|
this.file = loaded.file;
|
|
176
166
|
return;
|
|
@@ -179,7 +169,7 @@ export class StashStore {
|
|
|
179
169
|
throw new UnsupportedStashSchemaError(loaded.version);
|
|
180
170
|
// Corrupt input is quarantined and replaced in memory, so later writes
|
|
181
171
|
// cannot resurrect entries from the invalidated snapshot.
|
|
182
|
-
this.file = createEmptyStashFile(this.paths.sessionId
|
|
172
|
+
this.file = createEmptyStashFile(this.paths.sessionId);
|
|
183
173
|
this.corruptRecovery =
|
|
184
174
|
loaded.quarantinedTo === undefined
|
|
185
175
|
? undefined
|
|
@@ -187,12 +177,12 @@ export class StashStore {
|
|
|
187
177
|
}
|
|
188
178
|
}
|
|
189
179
|
export async function loadStashStore(paths, now = Date.now, write = writeStashFile) {
|
|
190
|
-
const loaded = await withStashFileLock(paths.file, () => readCurrentStashFile(paths.file, paths.sessionId
|
|
180
|
+
const loaded = await withStashFileLock(paths.file, () => readCurrentStashFile(paths.file, paths.sessionId));
|
|
191
181
|
if (loaded.kind === 'unsupported')
|
|
192
182
|
throw new UnsupportedStashSchemaError(loaded.version);
|
|
193
183
|
return new StashStore(paths, loaded, now, write);
|
|
194
184
|
}
|
|
195
|
-
async function readCurrentStashFile(filePath, sessionId
|
|
185
|
+
async function readCurrentStashFile(filePath, sessionId) {
|
|
196
186
|
let source;
|
|
197
187
|
try {
|
|
198
188
|
source = await readPrivateTextFile(filePath, 'stash file', MAX_STASH_FILE_BYTES);
|
|
@@ -201,7 +191,7 @@ async function readCurrentStashFile(filePath, sessionId, now) {
|
|
|
201
191
|
// A missing bank is an empty one; an oversized or unreadable bank is a real
|
|
202
192
|
// failure the caller must report rather than silently start over from.
|
|
203
193
|
if (hasErrorCode(error, 'ENOENT'))
|
|
204
|
-
return { kind: 'ready', file: createEmptyStashFile(sessionId
|
|
194
|
+
return { kind: 'ready', file: createEmptyStashFile(sessionId) };
|
|
205
195
|
throw error;
|
|
206
196
|
}
|
|
207
197
|
let raw;
|
package/lib/stash/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/stash/store.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,iFAAiF;AACjF,wEAAwE;AACxE,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,8EAA8E;AAC9E,iFAAiF;AAEjF,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GAGtB,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,sBAAsB,EACtB,YAAY,EAEZ,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEnB,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,cAAc,EAEd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,aAAa,CAAA;AAEpB;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAA;AAE9C,MAAM,0BAA0B,GAAG,oBAAoB,CAAA;AACvD,MAAM,2BAA2B,GAC/B,0FAA0F,CAAA;AAC5F,MAAM,sBAAsB,GAAG,iEAAiE,CAAA;AAEhG;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,KAAK,CAAQ;IAEtB,YAAY,KAAa;QACvB,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAkCD,0EAA0E;AAC1E,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,eAAe,CAAQ;IACvB,gBAAgB,CAAQ;IAEjC,YAAY,eAAuB,EAAE,mBAA2B,oBAAoB;QAClF,KAAK,CACH,2BAA2B,eAAe,0CAA0C,gBAAgB,KAAK,2BAA2B,EAAE,CACvI,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACb,IAAI,CAAW;IACf,eAAe,CAA8B;IACpC,QAAQ,CAAQ;IAChB,KAAK,CAAY;IACjB,GAAG,CAAO;IACV,KAAK,CAAa;IAEnC,YAAY,KAAiB,EAAE,MAAkB,EAAE,MAAa,IAAI,CAAC,GAAG,EAAE,QAAqB,cAAc;QAC3G,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/stash/store.ts"],"names":[],"mappings":"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"}
|
package/lib/stash.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type StashScope } from './stash/paths.ts';
|
|
1
2
|
import type { ResolvedEntry } from './stash/schema.ts';
|
|
2
3
|
import { type StashWriter } from './stash/store.ts';
|
|
3
4
|
/**
|
|
@@ -17,7 +18,7 @@ export interface StashHost {
|
|
|
17
18
|
editorIsAvailable(): boolean;
|
|
18
19
|
notice(message: string): void;
|
|
19
20
|
/** Ask the reader which entry to take, by id; undefined when they leave. */
|
|
20
|
-
pick(entries: readonly ResolvedEntry[],
|
|
21
|
+
pick(entries: readonly ResolvedEntry[], bankLabel: string): Promise<string | undefined>;
|
|
21
22
|
/** Ask the reader to confirm clearing `count` drafts. */
|
|
22
23
|
confirm(count: number): Promise<boolean>;
|
|
23
24
|
render(): void;
|
|
@@ -33,6 +34,10 @@ export interface PromptStashOptions {
|
|
|
33
34
|
* caller that re-reads it, because following the surface is its whole job.
|
|
34
35
|
*/
|
|
35
36
|
readonly sessionId: () => string;
|
|
37
|
+
/** Share a bank by absolute directory, or keep one bank per session. */
|
|
38
|
+
readonly scope?: StashScope | undefined;
|
|
39
|
+
/** Override the working directory captured at construction; tests avoid changing process cwd. */
|
|
40
|
+
readonly directory?: string | undefined;
|
|
36
41
|
/** Override the storage root; tests keep it inside a scratch directory. */
|
|
37
42
|
readonly baseDir?: string | undefined;
|
|
38
43
|
readonly now?: (() => number) | undefined;
|
|
@@ -42,21 +47,22 @@ export declare class PromptStash {
|
|
|
42
47
|
private readonly host;
|
|
43
48
|
private readonly options;
|
|
44
49
|
private readonly baseDir;
|
|
50
|
+
private readonly bankScope;
|
|
51
|
+
private readonly directory;
|
|
45
52
|
private readonly now;
|
|
46
53
|
private readonly write;
|
|
47
54
|
private store;
|
|
48
|
-
/**
|
|
55
|
+
/** Bank identity prevents a session switch from showing another bank's count. */
|
|
49
56
|
private scope;
|
|
50
57
|
private count;
|
|
51
58
|
/** The queue a second command waits behind, so writes never interleave. */
|
|
52
59
|
private tail;
|
|
53
60
|
constructor(host: StashHost, options: PromptStashOptions);
|
|
54
|
-
/** How many drafts
|
|
61
|
+
/** How many drafts the active bank holds, as last read. */
|
|
55
62
|
get entryCount(): number;
|
|
56
63
|
/**
|
|
57
|
-
* Read the bank
|
|
58
|
-
*
|
|
59
|
-
* nothing on disk, so a session that never stashes leaves no file behind.
|
|
64
|
+
* Read the bank in force, so the status count follows either selected scope.
|
|
65
|
+
* A read creates nothing on disk, so a bank without drafts leaves no file.
|
|
60
66
|
*/
|
|
61
67
|
open(): Promise<void>;
|
|
62
68
|
/**
|
|
@@ -98,13 +104,14 @@ export declare class PromptStash {
|
|
|
98
104
|
private editorIsAvailable;
|
|
99
105
|
private missingMessage;
|
|
100
106
|
/**
|
|
101
|
-
* The store of one
|
|
107
|
+
* The store of one bank, loaded on first use.
|
|
102
108
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* moves on before the queue reaches that command.
|
|
109
|
+
* Capture the session at submission so a queued command never retargets
|
|
110
|
+
* its bank after the surface moves to another session.
|
|
106
111
|
*/
|
|
107
112
|
private ensure;
|
|
113
|
+
private sessionChangedMessage;
|
|
114
|
+
private bankId;
|
|
108
115
|
private run;
|
|
109
116
|
/** Whether the surface still shows the session a command was issued in. */
|
|
110
117
|
private isCurrentSession;
|
package/lib/stash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":"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"}
|