@agent-deck/backend 1.5.0 → 1.5.2
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/.tsbuildinfo +1 -1
- package/dist/bootstrap/authoring-guide.d.ts +3 -0
- package/dist/bootstrap/authoring-guide.d.ts.map +1 -0
- package/dist/bootstrap/authoring-guide.js +19 -0
- package/dist/bootstrap/authoring-guide.js.map +1 -0
- package/dist/bootstrap/cursor-project-slug.d.ts +9 -0
- package/dist/bootstrap/cursor-project-slug.d.ts.map +1 -0
- package/dist/bootstrap/cursor-project-slug.js +15 -0
- package/dist/bootstrap/cursor-project-slug.js.map +1 -0
- package/dist/bootstrap/digest-cursor-session.d.ts +11 -0
- package/dist/bootstrap/digest-cursor-session.d.ts.map +1 -0
- package/dist/bootstrap/digest-cursor-session.js +162 -0
- package/dist/bootstrap/digest-cursor-session.js.map +1 -0
- package/dist/bootstrap/digest-session.d.ts +3 -0
- package/dist/bootstrap/digest-session.d.ts.map +1 -0
- package/dist/bootstrap/digest-session.js +356 -0
- package/dist/bootstrap/digest-session.js.map +1 -0
- package/dist/bootstrap/enumerate-cursor.d.ts +13 -0
- package/dist/bootstrap/enumerate-cursor.d.ts.map +1 -0
- package/dist/bootstrap/enumerate-cursor.js +105 -0
- package/dist/bootstrap/enumerate-cursor.js.map +1 -0
- package/dist/bootstrap/enumerate.d.ts +7 -0
- package/dist/bootstrap/enumerate.d.ts.map +1 -0
- package/dist/bootstrap/enumerate.js +49 -0
- package/dist/bootstrap/enumerate.js.map +1 -0
- package/dist/bootstrap/extractors.d.ts +18 -0
- package/dist/bootstrap/extractors.d.ts.map +1 -0
- package/dist/bootstrap/extractors.js +97 -0
- package/dist/bootstrap/extractors.js.map +1 -0
- package/dist/bootstrap/feedback-lexicon.d.ts +7 -0
- package/dist/bootstrap/feedback-lexicon.d.ts.map +1 -0
- package/dist/bootstrap/feedback-lexicon.js +24 -0
- package/dist/bootstrap/feedback-lexicon.js.map +1 -0
- package/dist/bootstrap/feedback-moments.d.ts +3 -0
- package/dist/bootstrap/feedback-moments.d.ts.map +1 -0
- package/dist/bootstrap/feedback-moments.js +77 -0
- package/dist/bootstrap/feedback-moments.js.map +1 -0
- package/dist/bootstrap/handoff.d.ts +5 -0
- package/dist/bootstrap/handoff.d.ts.map +1 -0
- package/dist/bootstrap/handoff.js +22 -0
- package/dist/bootstrap/handoff.js.map +1 -0
- package/dist/bootstrap/index.d.ts +8 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +20 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/real-intent.d.ts +14 -0
- package/dist/bootstrap/real-intent.d.ts.map +1 -0
- package/dist/bootstrap/real-intent.js +127 -0
- package/dist/bootstrap/real-intent.js.map +1 -0
- package/dist/bootstrap/run-bootstrap.d.ts +25 -0
- package/dist/bootstrap/run-bootstrap.d.ts.map +1 -0
- package/dist/bootstrap/run-bootstrap.js +221 -0
- package/dist/bootstrap/run-bootstrap.js.map +1 -0
- package/dist/cli-runtime.d.ts +8 -0
- package/dist/cli-runtime.d.ts.map +1 -1
- package/dist/cli-runtime.js +23 -2
- package/dist/cli-runtime.js.map +1 -1
- package/dist/export-import/sanitize-for-export.d.ts +2 -0
- package/dist/export-import/sanitize-for-export.d.ts.map +1 -1
- package/dist/export-import/sanitize-for-export.js +27 -1
- package/dist/export-import/sanitize-for-export.js.map +1 -1
- package/dist/models/database.d.ts +11 -1
- package/dist/models/database.d.ts.map +1 -1
- package/dist/models/database.js +196 -1
- package/dist/models/database.js.map +1 -1
- package/dist/playbooks/playbook-manager.d.ts +5 -1
- package/dist/playbooks/playbook-manager.d.ts.map +1 -1
- package/dist/playbooks/playbook-manager.js +40 -4
- package/dist/playbooks/playbook-manager.js.map +1 -1
- package/dist/routes/decks.d.ts +6 -1
- package/dist/routes/decks.d.ts.map +1 -1
- package/dist/routes/decks.js +49 -1
- package/dist/routes/decks.js.map +1 -1
- package/dist/routes/export-import.d.ts.map +1 -1
- package/dist/routes/export-import.js +4 -0
- package/dist/routes/export-import.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -4
- package/dist/server/index.js.map +1 -1
- package/dist/services/service-manager.d.ts +5 -1
- package/dist/services/service-manager.d.ts.map +1 -1
- package/dist/services/service-manager.js +50 -7
- package/dist/services/service-manager.js.map +1 -1
- package/dist/store/atomic-write.d.ts +2 -0
- package/dist/store/atomic-write.d.ts.map +1 -0
- package/dist/store/atomic-write.js +16 -0
- package/dist/store/atomic-write.js.map +1 -0
- package/dist/store/content-hash.d.ts +2 -0
- package/dist/store/content-hash.d.ts.map +1 -0
- package/dist/store/content-hash.js +62 -0
- package/dist/store/content-hash.js.map +1 -0
- package/dist/store/credential-codec.d.ts +4 -0
- package/dist/store/credential-codec.d.ts.map +1 -0
- package/dist/store/credential-codec.js +59 -0
- package/dist/store/credential-codec.js.map +1 -0
- package/dist/store/deck-codec.d.ts +4 -0
- package/dist/store/deck-codec.d.ts.map +1 -0
- package/dist/store/deck-codec.js +13 -0
- package/dist/store/deck-codec.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +21 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/migrate.d.ts +17 -0
- package/dist/store/migrate.d.ts.map +1 -0
- package/dist/store/migrate.js +146 -0
- package/dist/store/migrate.js.map +1 -0
- package/dist/store/paths.d.ts +10 -0
- package/dist/store/paths.d.ts.map +1 -0
- package/dist/store/paths.js +24 -0
- package/dist/store/paths.js.map +1 -0
- package/dist/store/playbook-codec.d.ts +4 -0
- package/dist/store/playbook-codec.d.ts.map +1 -0
- package/dist/store/playbook-codec.js +65 -0
- package/dist/store/playbook-codec.js.map +1 -0
- package/dist/store/reindex.d.ts +27 -0
- package/dist/store/reindex.d.ts.map +1 -0
- package/dist/store/reindex.js +189 -0
- package/dist/store/reindex.js.map +1 -0
- package/dist/store/service-codec.d.ts +6 -0
- package/dist/store/service-codec.d.ts.map +1 -0
- package/dist/store/service-codec.js +25 -0
- package/dist/store/service-codec.js.map +1 -0
- package/dist/store/startup.d.ts +8 -0
- package/dist/store/startup.d.ts.map +1 -0
- package/dist/store/startup.js +69 -0
- package/dist/store/startup.js.map +1 -0
- package/dist/store/writer.d.ts +17 -0
- package/dist/store/writer.d.ts.map +1 -0
- package/dist/store/writer.js +96 -0
- package/dist/store/writer.js.map +1 -0
- package/dist/vault/credential-manager.d.ts +6 -1
- package/dist/vault/credential-manager.d.ts.map +1 -1
- package/dist/vault/credential-manager.js +26 -5
- package/dist/vault/credential-manager.js.map +1 -1
- package/dist/vault/yaml-sync.d.ts.map +1 -1
- package/dist/vault/yaml-sync.js +8 -20
- package/dist/vault/yaml-sync.js.map +1 -1
- package/package.json +8 -2
- package/static-ui/assets/{index-D64LC4cn.js → index-C4c6WJOq.js} +110 -110
- package/static-ui/assets/index-DI74jZFZ.css +1 -0
- package/static-ui/index.html +2 -2
- package/static-ui/assets/index-B1w2Pair.css +0 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractRawUserText = extractRawUserText;
|
|
4
|
+
exports.unwrapCursorUserEnvelope = unwrapCursorUserEnvelope;
|
|
5
|
+
exports.isHostInjectedUserText = isHostInjectedUserText;
|
|
6
|
+
exports.isCursorHostInjection = isCursorHostInjection;
|
|
7
|
+
exports.extractUserText = extractUserText;
|
|
8
|
+
exports.isRealUserIntent = isRealUserIntent;
|
|
9
|
+
const CURSOR_USER_QUERY_RE = /<user_query>\s*([\s\S]*?)\s*<\/user_query>/i;
|
|
10
|
+
const CURSOR_TIMESTAMP_RE = /<timestamp>\s*[\s\S]*?\s*<\/timestamp>\s*/gi;
|
|
11
|
+
/** Structural Claude / Cursor host chrome — durable, locale-independent. */
|
|
12
|
+
const HOST_INJECTION_TAGS = [
|
|
13
|
+
'<local-command-caveat>',
|
|
14
|
+
'<command-name>',
|
|
15
|
+
'<command-message>',
|
|
16
|
+
'<local-command-stdout>',
|
|
17
|
+
'<system-reminder>',
|
|
18
|
+
'<mcp_meta_tools>',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Supplemental English / host-phrasing prefixes (Cursor injections, session-continue).
|
|
22
|
+
* Structural tags + Cursor `<user_query>` gate are the durable filters; this list is a safety net.
|
|
23
|
+
*/
|
|
24
|
+
const HOST_INJECTION_PREFIXES = [
|
|
25
|
+
'Briefly inform the user about the task result',
|
|
26
|
+
'The beginning of the above subagent result is already visible to the user',
|
|
27
|
+
'If the available MCP tools do not fully support what the user asked you to do',
|
|
28
|
+
'This session is being continued from a previous conversation',
|
|
29
|
+
'Base directory for this skill:',
|
|
30
|
+
'===== BEGIN SESSION TRANSCRIPT',
|
|
31
|
+
];
|
|
32
|
+
function isRecord(value) {
|
|
33
|
+
return typeof value === 'object' && value !== null;
|
|
34
|
+
}
|
|
35
|
+
/** Raw message text before Cursor envelope unwrap. */
|
|
36
|
+
function extractRawUserText(line) {
|
|
37
|
+
if (!isRecord(line) || !isRecord(line.message)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const { content } = line.message;
|
|
41
|
+
if (typeof content === 'string') {
|
|
42
|
+
return content;
|
|
43
|
+
}
|
|
44
|
+
if (!Array.isArray(content) || content.some((block) => !isRecord(block) || block.type !== 'text' || typeof block.text !== 'string')) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return content.map((block) => block.text).join('\n');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Strip Cursor `<timestamp>` / unwrap `<user_query>…</user_query>`.
|
|
51
|
+
* Claude string content is unchanged (no those tags).
|
|
52
|
+
*/
|
|
53
|
+
function unwrapCursorUserEnvelope(raw) {
|
|
54
|
+
let text = raw.replace(CURSOR_TIMESTAMP_RE, '').trim();
|
|
55
|
+
const match = CURSOR_USER_QUERY_RE.exec(text);
|
|
56
|
+
if (match) {
|
|
57
|
+
return match[1].trim();
|
|
58
|
+
}
|
|
59
|
+
return text.trim();
|
|
60
|
+
}
|
|
61
|
+
/** Host-injected user-role text for both Claude and Cursor (not a human task intent). */
|
|
62
|
+
function isHostInjectedUserText(raw) {
|
|
63
|
+
const lowerTags = raw; // tags are ASCII
|
|
64
|
+
if (HOST_INJECTION_TAGS.some((tag) => lowerTags.includes(tag))) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
const unwrapped = unwrapCursorUserEnvelope(raw);
|
|
68
|
+
return HOST_INJECTION_PREFIXES.some((prefix) => unwrapped.startsWith(prefix) || raw.includes(prefix));
|
|
69
|
+
}
|
|
70
|
+
/** @deprecated Prefer isHostInjectedUserText — kept for call-site clarity in Cursor-focused tests. */
|
|
71
|
+
function isCursorHostInjection(raw) {
|
|
72
|
+
return isHostInjectedUserText(raw);
|
|
73
|
+
}
|
|
74
|
+
function extractUserText(line) {
|
|
75
|
+
const raw = extractRawUserText(line);
|
|
76
|
+
if (raw === null) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const text = unwrapCursorUserEnvelope(raw);
|
|
80
|
+
return text.length > 0 ? text : null;
|
|
81
|
+
}
|
|
82
|
+
function isRealUserIntent(line) {
|
|
83
|
+
if (!isRecord(line)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const transcriptLine = line;
|
|
87
|
+
if (transcriptLine.isSidechain === true) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (Object.prototype.hasOwnProperty.call(transcriptLine, 'toolUseResult')) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const raw = extractRawUserText(transcriptLine);
|
|
94
|
+
if (raw === null || raw.trim().length === 0) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
// Shared host-injection gate (Claude slash/hook chrome + Cursor injected role:user).
|
|
98
|
+
if (isHostInjectedUserText(raw)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
// Cursor role:user without <user_query> is almost always host chrome.
|
|
102
|
+
// Real Cursor turns (dated or legacy) wrap the body in <user_query>.
|
|
103
|
+
const messageRole = isRecord(transcriptLine.message) ? transcriptLine.message.role : undefined;
|
|
104
|
+
const looksLikeCursorUser = transcriptLine.role === 'user' || (messageRole === 'user' && transcriptLine.type !== 'user');
|
|
105
|
+
if (looksLikeCursorUser && !CURSOR_USER_QUERY_RE.test(raw) && !raw.includes('<timestamp>')) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const text = unwrapCursorUserEnvelope(raw);
|
|
109
|
+
if (text.length === 0) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const isUser = transcriptLine.type === 'user' ||
|
|
113
|
+
transcriptLine.role === 'user' ||
|
|
114
|
+
messageRole === 'user';
|
|
115
|
+
if (!isUser) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
// Cursor control lines (turn_ended, etc.) must not count even if they carry a message blob.
|
|
119
|
+
if (typeof transcriptLine.type === 'string' &&
|
|
120
|
+
transcriptLine.type !== 'user' &&
|
|
121
|
+
transcriptLine.type !== 'assistant' &&
|
|
122
|
+
transcriptLine.role !== 'user') {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=real-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"real-intent.js","sourceRoot":"","sources":["../../src/bootstrap/real-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type BootstrapHost, type BootstrapManifest } from '@agent-deck/shared';
|
|
2
|
+
export type BootstrapHostOption = BootstrapHost | 'all';
|
|
3
|
+
export type BootstrapOptions = {
|
|
4
|
+
/** @deprecated Prefer claudeProjectsDir — kept for CLI --projects-dir compat (Claude tree). */
|
|
5
|
+
projectsDir?: string;
|
|
6
|
+
claudeProjectsDir?: string;
|
|
7
|
+
cursorProjectsDir?: string;
|
|
8
|
+
host?: BootstrapHostOption;
|
|
9
|
+
outDir?: string;
|
|
10
|
+
bootstrapRoot?: string;
|
|
11
|
+
workspace?: string;
|
|
12
|
+
since?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
now?: () => Date;
|
|
15
|
+
};
|
|
16
|
+
export type BootstrapResult = {
|
|
17
|
+
outDir: string;
|
|
18
|
+
manifestPath: string;
|
|
19
|
+
guidePath: string;
|
|
20
|
+
latestPointerPath: string;
|
|
21
|
+
manifest: BootstrapManifest;
|
|
22
|
+
warning?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function runBootstrap(options?: BootstrapOptions): BootstrapResult;
|
|
25
|
+
//# sourceMappingURL=run-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/run-bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,KAAK,CAAC;AAExD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAOF,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAwG5E"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runBootstrap = runBootstrap;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const shared_1 = require("@agent-deck/shared");
|
|
11
|
+
const authoring_guide_1 = require("./authoring-guide");
|
|
12
|
+
const cursor_project_slug_1 = require("./cursor-project-slug");
|
|
13
|
+
const digest_cursor_session_1 = require("./digest-cursor-session");
|
|
14
|
+
const digest_session_1 = require("./digest-session");
|
|
15
|
+
const enumerate_cursor_1 = require("./enumerate-cursor");
|
|
16
|
+
const enumerate_1 = require("./enumerate");
|
|
17
|
+
function runBootstrap(options = {}) {
|
|
18
|
+
const now = options.now ?? (() => new Date());
|
|
19
|
+
const host = options.host ?? 'all';
|
|
20
|
+
const claudeProjectsDir = node_path_1.default.resolve(options.claudeProjectsDir ??
|
|
21
|
+
options.projectsDir ??
|
|
22
|
+
process.env.AGENT_DECK_CLAUDE_PROJECTS_DIR ??
|
|
23
|
+
node_path_1.default.join(node_os_1.default.homedir(), '.claude', 'projects'));
|
|
24
|
+
const cursorProjectsDir = node_path_1.default.resolve(options.cursorProjectsDir ??
|
|
25
|
+
process.env.AGENT_DECK_CURSOR_PROJECTS_DIR ??
|
|
26
|
+
node_path_1.default.join(node_os_1.default.homedir(), '.cursor', 'projects'));
|
|
27
|
+
// Host-agnostic Agent Deck data root (same home as DB / logs), not under ~/.claude.
|
|
28
|
+
const bootstrapRoot = node_path_1.default.resolve(options.bootstrapRoot ?? node_path_1.default.join((0, shared_1.resolveAgentDeckHome)(), 'bootstrap'));
|
|
29
|
+
const outDir = resolveOutDir(options.outDir, bootstrapRoot, now);
|
|
30
|
+
const since = parseSince(options.since);
|
|
31
|
+
const workspace = options.workspace ? node_path_1.default.resolve(options.workspace) : undefined;
|
|
32
|
+
const limit = normalizeLimit(options.limit);
|
|
33
|
+
if (node_fs_1.default.existsSync(outDir)) {
|
|
34
|
+
throw new Error(`Bootstrap output already exists: ${outDir}`);
|
|
35
|
+
}
|
|
36
|
+
const digests = [];
|
|
37
|
+
if (host === 'claude' || host === 'all') {
|
|
38
|
+
for (const session of (0, enumerate_1.enumerateSessions)(claudeProjectsDir)) {
|
|
39
|
+
digests.push({
|
|
40
|
+
digest: (0, digest_session_1.digestSession)(session.sessionId, readJsonLines(session.filePath)),
|
|
41
|
+
mtimeMs: session.mtimeMs,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (host === 'cursor' || host === 'all') {
|
|
46
|
+
const cursorSlug = workspace ? (0, cursor_project_slug_1.encodeCursorProjectSlug)(workspace) : undefined;
|
|
47
|
+
for (const session of (0, enumerate_cursor_1.enumerateCursorSessions)(cursorProjectsDir)) {
|
|
48
|
+
if (cursorSlug && session.projectSlug !== cursorSlug) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
digests.push({
|
|
52
|
+
digest: (0, digest_cursor_session_1.digestCursorSession)(session.sessionId, readJsonLines(session.filePath), session.projectSlug, {
|
|
53
|
+
...(workspace && session.projectSlug === cursorSlug ? { workspaceRoot: workspace } : {}),
|
|
54
|
+
}),
|
|
55
|
+
mtimeMs: session.mtimeMs,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const filtered = digests
|
|
60
|
+
.filter(({ digest, mtimeMs }) => matchesFilters(digest, mtimeMs, workspace, since))
|
|
61
|
+
.sort((left, right) => right.mtimeMs - left.mtimeMs)
|
|
62
|
+
.slice(0, limit);
|
|
63
|
+
const digestDir = node_path_1.default.join(outDir, 'digests');
|
|
64
|
+
node_fs_1.default.mkdirSync(digestDir, { recursive: true });
|
|
65
|
+
const digestPaths = new Map();
|
|
66
|
+
const filenameCounts = new Map();
|
|
67
|
+
for (const { digest } of filtered) {
|
|
68
|
+
const filename = uniqueDigestFilename(digest, filenameCounts);
|
|
69
|
+
const digestPath = node_path_1.default.join(digestDir, filename);
|
|
70
|
+
node_fs_1.default.writeFileSync(digestPath, `${JSON.stringify(digest, null, 2)}\n`, 'utf8');
|
|
71
|
+
digestPaths.set(digest, digestPath);
|
|
72
|
+
}
|
|
73
|
+
const guidePath = node_path_1.default.join(outDir, 'authoring-guide.md');
|
|
74
|
+
node_fs_1.default.writeFileSync(guidePath, authoring_guide_1.AUTHORING_GUIDE_MARKDOWN, 'utf8');
|
|
75
|
+
const hosts = {
|
|
76
|
+
claude: filtered.filter(({ digest }) => digest.host === 'claude').length,
|
|
77
|
+
cursor: filtered.filter(({ digest }) => digest.host === 'cursor').length,
|
|
78
|
+
};
|
|
79
|
+
const manifest = shared_1.BootstrapManifestSchema.parse({
|
|
80
|
+
schemaVersion: 1,
|
|
81
|
+
generatedAt: now().toISOString(),
|
|
82
|
+
digestDir,
|
|
83
|
+
guideRef: guidePath,
|
|
84
|
+
totalSessions: filtered.length,
|
|
85
|
+
hosts,
|
|
86
|
+
workspaces: buildWorkspaces(filtered, digestPaths),
|
|
87
|
+
});
|
|
88
|
+
const manifestPath = node_path_1.default.join(outDir, 'manifest.json');
|
|
89
|
+
node_fs_1.default.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
|
|
90
|
+
node_fs_1.default.mkdirSync(bootstrapRoot, { recursive: true });
|
|
91
|
+
const latestPointerPath = node_path_1.default.join(bootstrapRoot, 'latest');
|
|
92
|
+
writeLatestPointer(latestPointerPath, outDir);
|
|
93
|
+
return {
|
|
94
|
+
outDir,
|
|
95
|
+
manifestPath,
|
|
96
|
+
guidePath,
|
|
97
|
+
latestPointerPath,
|
|
98
|
+
manifest,
|
|
99
|
+
...(filtered.length < 5
|
|
100
|
+
? { warning: `Only ${filtered.length} sessions found; five or more are recommended.` }
|
|
101
|
+
: {}),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function writeLatestPointer(latestPointerPath, outDir) {
|
|
105
|
+
if (node_fs_1.default.existsSync(latestPointerPath)) {
|
|
106
|
+
const stat = node_fs_1.default.lstatSync(latestPointerPath);
|
|
107
|
+
if (!stat.isFile()) {
|
|
108
|
+
node_fs_1.default.unlinkSync(latestPointerPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
node_fs_1.default.writeFileSync(latestPointerPath, `${outDir}\n`, 'utf8');
|
|
112
|
+
}
|
|
113
|
+
function resolveOutDir(outDir, bootstrapRoot, now) {
|
|
114
|
+
if (outDir) {
|
|
115
|
+
return node_path_1.default.resolve(outDir);
|
|
116
|
+
}
|
|
117
|
+
const timestamp = now().toISOString();
|
|
118
|
+
let candidate = node_path_1.default.join(bootstrapRoot, timestamp);
|
|
119
|
+
let suffix = 1;
|
|
120
|
+
while (node_fs_1.default.existsSync(candidate)) {
|
|
121
|
+
candidate = node_path_1.default.join(bootstrapRoot, `${timestamp}-${suffix}`);
|
|
122
|
+
suffix += 1;
|
|
123
|
+
}
|
|
124
|
+
return candidate;
|
|
125
|
+
}
|
|
126
|
+
function parseSince(since) {
|
|
127
|
+
if (!since) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const parsed = Date.parse(since);
|
|
131
|
+
if (Number.isNaN(parsed)) {
|
|
132
|
+
throw new Error(`Invalid --since date: ${since}`);
|
|
133
|
+
}
|
|
134
|
+
return parsed;
|
|
135
|
+
}
|
|
136
|
+
function normalizeLimit(limit) {
|
|
137
|
+
if (limit === undefined) {
|
|
138
|
+
return Number.POSITIVE_INFINITY;
|
|
139
|
+
}
|
|
140
|
+
if (!Number.isInteger(limit) || limit < 0) {
|
|
141
|
+
throw new Error(`Invalid limit: ${limit}`);
|
|
142
|
+
}
|
|
143
|
+
return limit;
|
|
144
|
+
}
|
|
145
|
+
function readJsonLines(filePath) {
|
|
146
|
+
try {
|
|
147
|
+
return node_fs_1.default
|
|
148
|
+
.readFileSync(filePath, 'utf8')
|
|
149
|
+
.split('\n')
|
|
150
|
+
.filter((line) => line.trim())
|
|
151
|
+
.map((line) => {
|
|
152
|
+
try {
|
|
153
|
+
return JSON.parse(line);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function matchesFilters(digest, mtimeMs, workspace, since) {
|
|
165
|
+
if (workspace) {
|
|
166
|
+
const slug = (0, cursor_project_slug_1.encodeCursorProjectSlug)(workspace);
|
|
167
|
+
const matches = digest.workspaceRoot === workspace ||
|
|
168
|
+
digest.workspaceSlug === slug ||
|
|
169
|
+
digest.workspaceLabel === slug ||
|
|
170
|
+
digest.workspaceRoot === slug;
|
|
171
|
+
if (!matches) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return (since === undefined ||
|
|
176
|
+
mtimeMs >= since ||
|
|
177
|
+
(!Number.isNaN(Date.parse(digest.startedAt)) && Date.parse(digest.startedAt) >= since));
|
|
178
|
+
}
|
|
179
|
+
function uniqueDigestFilename(digest, counts) {
|
|
180
|
+
const base = `${digest.host}__${sanitizeFilename(digest.workspaceLabel || node_path_1.default.basename(digest.workspaceRoot) || 'unknown')}__${sanitizeFilename(digest.sessionId)}`;
|
|
181
|
+
const count = counts.get(base) ?? 0;
|
|
182
|
+
counts.set(base, count + 1);
|
|
183
|
+
return `${base}${count === 0 ? '' : `-${count + 1}`}.json`;
|
|
184
|
+
}
|
|
185
|
+
function sanitizeFilename(value) {
|
|
186
|
+
return value.replace(/[^a-zA-Z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'unknown';
|
|
187
|
+
}
|
|
188
|
+
function buildWorkspaces(records, digestPaths) {
|
|
189
|
+
const groups = new Map();
|
|
190
|
+
for (const { digest } of records) {
|
|
191
|
+
const key = digest.workspaceSlug || digest.workspaceRoot;
|
|
192
|
+
const existing = groups.get(key);
|
|
193
|
+
const absRoot = digest.workspaceRoot.startsWith('/') ? digest.workspaceRoot : undefined;
|
|
194
|
+
if (!existing) {
|
|
195
|
+
groups.set(key, {
|
|
196
|
+
workspaceRoot: absRoot ?? digest.workspaceRoot,
|
|
197
|
+
label: digest.workspaceLabel || node_path_1.default.basename(digest.workspaceRoot) || 'unknown',
|
|
198
|
+
...(digest.workspaceSlug ? { workspaceSlug: digest.workspaceSlug } : {}),
|
|
199
|
+
digestPaths: [digestPaths.get(digest)],
|
|
200
|
+
});
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
existing.digestPaths.push(digestPaths.get(digest));
|
|
204
|
+
if (absRoot && !existing.workspaceRoot.startsWith('/')) {
|
|
205
|
+
existing.workspaceRoot = absRoot;
|
|
206
|
+
}
|
|
207
|
+
if (digest.workspaceSlug) {
|
|
208
|
+
existing.workspaceSlug = digest.workspaceSlug;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return [...groups.values()]
|
|
212
|
+
.sort((left, right) => left.workspaceRoot.localeCompare(right.workspaceRoot))
|
|
213
|
+
.map((group) => ({
|
|
214
|
+
workspaceRoot: group.workspaceRoot,
|
|
215
|
+
label: group.label,
|
|
216
|
+
...(group.workspaceSlug ? { workspaceSlug: group.workspaceSlug } : {}),
|
|
217
|
+
sessionCount: group.digestPaths.length,
|
|
218
|
+
digestPaths: group.digestPaths.sort((left, right) => left.localeCompare(right)),
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=run-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/run-bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-runtime.d.ts
CHANGED
|
@@ -71,6 +71,14 @@ export declare function createCliExportImport(): {
|
|
|
71
71
|
}>;
|
|
72
72
|
};
|
|
73
73
|
export type CliExportImport = ReturnType<typeof createCliExportImport>;
|
|
74
|
+
/** File-backed store operations for the CLI. */
|
|
75
|
+
export declare function createCliStore(): {
|
|
76
|
+
migrate(opts?: {
|
|
77
|
+
dryRun?: boolean;
|
|
78
|
+
}): Promise<import("./store").StoreMigrateResult>;
|
|
79
|
+
reindex(): Promise<import("./store").StoreReindexResult>;
|
|
80
|
+
};
|
|
81
|
+
export type CliStore = ReturnType<typeof createCliStore>;
|
|
74
82
|
export { PlaybookDependencyError, ExportBundleError, ImportBundleError };
|
|
75
83
|
export { syncPlaybookStubs, readUseManifest, writeUseManifest, healUseManifest, type StubSyncResult, type PlaybookStubInput, } from './playbooks/stub-sync';
|
|
76
84
|
//# sourceMappingURL=cli-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAmB,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAEL,iBAAiB,EAEjB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAmB,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAEL,iBAAiB,EAEjB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAIzB,uEAAuE;AACvE,wBAAgB,0BAA0B,IAAI,iBAAiB,CAI9D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB;sBAMZ,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;uBAuB5D,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;mBAQjE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;oBAa5D,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;qBASzD,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;iBAKjD,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;qBAKxC,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;kCAmBlE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;EAIvE;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE7E;;GAEG;AACH,wBAAgB,qBAAqB;6BAKnB,MAAM,WACT,aAAa,GACrB,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;8BAmB5D,MAAM,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;EAsBhF;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE,gDAAgD;AAChD,wBAAgB,cAAc;mBAIZ;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;;EAOrC;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAEzE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC"}
|
package/dist/cli-runtime.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.healUseManifest = exports.writeUseManifest = exports.readUseManifest = e
|
|
|
7
7
|
exports.createCliCredentialManager = createCliCredentialManager;
|
|
8
8
|
exports.createCliCollectionAdmin = createCliCollectionAdmin;
|
|
9
9
|
exports.createCliExportImport = createCliExportImport;
|
|
10
|
+
exports.createCliStore = createCliStore;
|
|
10
11
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
11
12
|
const node_path_1 = __importDefault(require("node:path"));
|
|
12
13
|
const database_1 = require("./models/database");
|
|
@@ -17,10 +18,13 @@ Object.defineProperty(exports, "PlaybookDependencyError", { enumerable: true, ge
|
|
|
17
18
|
const export_import_1 = require("./export-import");
|
|
18
19
|
Object.defineProperty(exports, "ExportBundleError", { enumerable: true, get: function () { return export_import_1.ExportBundleError; } });
|
|
19
20
|
Object.defineProperty(exports, "ImportBundleError", { enumerable: true, get: function () { return export_import_1.ImportBundleError; } });
|
|
21
|
+
const store_1 = require("./store");
|
|
22
|
+
const writer_1 = require("./store/writer");
|
|
20
23
|
/** Shared credential manager for the agent-deck CLI (vault + exec). */
|
|
21
24
|
function createCliCredentialManager() {
|
|
22
25
|
const db = new database_1.DatabaseManager((0, paths_1.resolveDatabasePath)());
|
|
23
|
-
|
|
26
|
+
const storeWriter = new writer_1.FileStoreWriter();
|
|
27
|
+
return new vault_1.CredentialManager(db, (0, vault_1.createSecretStore)(), undefined, storeWriter);
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* Rare collection/deck ops for the CLI (not MCP).
|
|
@@ -28,7 +32,8 @@ function createCliCredentialManager() {
|
|
|
28
32
|
*/
|
|
29
33
|
function createCliCollectionAdmin() {
|
|
30
34
|
const db = new database_1.DatabaseManager((0, paths_1.resolveDatabasePath)());
|
|
31
|
-
const
|
|
35
|
+
const storeWriter = new writer_1.FileStoreWriter();
|
|
36
|
+
const playbooks = new playbook_manager_1.PlaybookManager(db, storeWriter);
|
|
32
37
|
return {
|
|
33
38
|
async deleteService(id) {
|
|
34
39
|
const service = await db.getService(id);
|
|
@@ -47,6 +52,7 @@ function createCliCollectionAdmin() {
|
|
|
47
52
|
if (!deleted) {
|
|
48
53
|
return { ok: false, error: `Service not found: ${id}` };
|
|
49
54
|
}
|
|
55
|
+
await storeWriter.deleteService(id);
|
|
50
56
|
return { ok: true };
|
|
51
57
|
},
|
|
52
58
|
async deletePlaybook(id) {
|
|
@@ -65,6 +71,7 @@ function createCliCollectionAdmin() {
|
|
|
65
71
|
if (!deleted) {
|
|
66
72
|
return { ok: false, error: `Deck not found: ${id}` };
|
|
67
73
|
}
|
|
74
|
+
await storeWriter.deleteDeck(id);
|
|
68
75
|
return { ok: true };
|
|
69
76
|
},
|
|
70
77
|
async listServices() {
|
|
@@ -136,6 +143,8 @@ function createCliExportImport() {
|
|
|
136
143
|
if (report.status === 'failed') {
|
|
137
144
|
return { ok: false, error: report.warnings.join('; ') || 'Import failed' };
|
|
138
145
|
}
|
|
146
|
+
// Overwrite store files so reindex cannot wipe imported cards.
|
|
147
|
+
await (0, store_1.migrateSqliteToStore)(db, { force: true });
|
|
139
148
|
return { ok: true, report };
|
|
140
149
|
}
|
|
141
150
|
catch (error) {
|
|
@@ -149,6 +158,18 @@ function createCliExportImport() {
|
|
|
149
158
|
},
|
|
150
159
|
};
|
|
151
160
|
}
|
|
161
|
+
/** File-backed store operations for the CLI. */
|
|
162
|
+
function createCliStore() {
|
|
163
|
+
const db = new database_1.DatabaseManager((0, paths_1.resolveDatabasePath)());
|
|
164
|
+
return {
|
|
165
|
+
migrate(opts = {}) {
|
|
166
|
+
return (0, store_1.migrateSqliteToStore)(db, opts);
|
|
167
|
+
},
|
|
168
|
+
reindex() {
|
|
169
|
+
return (0, store_1.reindexStoreToSqlite)(db, { force: true });
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
152
173
|
var stub_sync_1 = require("./playbooks/stub-sync");
|
|
153
174
|
Object.defineProperty(exports, "syncPlaybookStubs", { enumerable: true, get: function () { return stub_sync_1.syncPlaybookStubs; } });
|
|
154
175
|
Object.defineProperty(exports, "readUseManifest", { enumerable: true, get: function () { return stub_sync_1.readUseManifest; } });
|
package/dist/cli-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { BundleService } from '@agent-deck/shared';
|
|
2
2
|
import type { Service } from '@agent-deck/shared';
|
|
3
|
+
/** Strip Authorization and other secret-like headers from service config snapshots. */
|
|
4
|
+
export declare function stripAuthorizationHeader(headers?: Record<string, string> | null): Record<string, string> | undefined;
|
|
3
5
|
/** Create-safe service snapshot for export bundles (no secrets, no runtime state). */
|
|
4
6
|
export declare function sanitizeServiceForExport(service: Service): BundleService;
|
|
5
7
|
export declare function serviceNeedsOauthReconnect(service: BundleService): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-for-export.d.ts","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sanitize-for-export.d.ts","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA8BlD,uFAAuF;AACvF,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAYpC;AAMD,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CA+BxE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAM1E;AAED,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,6NAchC,CAAC"}
|
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FORBIDDEN_EXPORT_SERVICE_KEYS = void 0;
|
|
4
|
+
exports.stripAuthorizationHeader = stripAuthorizationHeader;
|
|
4
5
|
exports.sanitizeServiceForExport = sanitizeServiceForExport;
|
|
5
6
|
exports.serviceNeedsOauthReconnect = serviceNeedsOauthReconnect;
|
|
7
|
+
/** Header names that must never enter export bundles or the git-friendly store. */
|
|
8
|
+
const SECRET_HEADER_NAMES = new Set([
|
|
9
|
+
'authorization',
|
|
10
|
+
'proxy-authorization',
|
|
11
|
+
'cookie',
|
|
12
|
+
'set-cookie',
|
|
13
|
+
'x-api-key',
|
|
14
|
+
'api-key',
|
|
15
|
+
'x-auth-token',
|
|
16
|
+
'x-access-token',
|
|
17
|
+
'x-secret-key',
|
|
18
|
+
]);
|
|
19
|
+
function isSecretHeaderName(name) {
|
|
20
|
+
const lower = name.toLowerCase();
|
|
21
|
+
if (SECRET_HEADER_NAMES.has(lower)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// Catch variants like X-Foo-Api-Key / My-Access-Token
|
|
25
|
+
return (lower.includes('api-key') ||
|
|
26
|
+
lower.includes('access-token') ||
|
|
27
|
+
lower.includes('auth-token') ||
|
|
28
|
+
lower.endsWith('-secret') ||
|
|
29
|
+
lower.endsWith('-password'));
|
|
30
|
+
}
|
|
31
|
+
/** Strip Authorization and other secret-like headers from service config snapshots. */
|
|
6
32
|
function stripAuthorizationHeader(headers) {
|
|
7
33
|
if (!headers) {
|
|
8
34
|
return undefined;
|
|
9
35
|
}
|
|
10
36
|
const next = {};
|
|
11
37
|
for (const [key, value] of Object.entries(headers)) {
|
|
12
|
-
if (key
|
|
38
|
+
if (isSecretHeaderName(key)) {
|
|
13
39
|
continue;
|
|
14
40
|
}
|
|
15
41
|
next[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-for-export.js","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sanitize-for-export.js","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import { Service, CreateServiceInput, UpdateServiceInput, Deck, CreateDeckInput, UpdateDeckInput, DeckService, AddServiceToDeckInput, RemoveServiceFromDeckInput, ReorderDeckServicesInput, Credential, AddCredentialToDeckInput, RemoveCredentialFromDeckInput, DeckCredential, ExecRun, Playbook, CreatePlaybookInput, UpdatePlaybookInput, AddPlaybookToDeckInput, RemovePlaybookFromDeckInput, DeckPlaybook, PlaybookPatch, PlaybookVersion, PlaybookEvent, FeedbackSignal, FeedbackSignalSource, FeedbackSignalStatus } from '@agent-deck/shared';
|
|
1
|
+
import { Service, CreateServiceInput, UpdateServiceInput, Deck, CreateDeckInput, UpdateDeckInput, DeckService, AddServiceToDeckInput, RemoveServiceFromDeckInput, ReorderDeckServicesInput, Credential, AddCredentialToDeckInput, RemoveCredentialFromDeckInput, DeckCredential, ExecRun, Playbook, CreatePlaybookInput, UpdatePlaybookInput, AddPlaybookToDeckInput, RemovePlaybookFromDeckInput, DeckPlaybook, PlaybookPatch, PlaybookVersion, PlaybookEvent, FeedbackSignal, FeedbackSignalSource, FeedbackSignalStatus, StoreCredentialMeta, StoreDeck, StorePlaybookFile, StoreService } from '@agent-deck/shared';
|
|
2
|
+
export declare const STORE_CONTENT_HASH = "store_content_hash";
|
|
3
|
+
export type StoreSnapshot = {
|
|
4
|
+
services: StoreService[];
|
|
5
|
+
credentials: StoreCredentialMeta[];
|
|
6
|
+
playbooks: StorePlaybookFile[];
|
|
7
|
+
decks: StoreDeck[];
|
|
8
|
+
};
|
|
2
9
|
export declare class DatabaseManager {
|
|
3
10
|
private db;
|
|
4
11
|
constructor(dbPath?: string);
|
|
@@ -15,6 +22,9 @@ export declare class DatabaseManager {
|
|
|
15
22
|
private dropColumnIfExists;
|
|
16
23
|
private createTables;
|
|
17
24
|
hasAnyServices(): boolean;
|
|
25
|
+
getStoreMeta(key: string): string | null;
|
|
26
|
+
setStoreMeta(key: string, value: string): void;
|
|
27
|
+
applyStoreSnapshot(snapshot: StoreSnapshot, contentHash: string): void;
|
|
18
28
|
private createIndexes;
|
|
19
29
|
private mapCredentialRow;
|
|
20
30
|
getDeckCredentialsForDeck(deckId: string): Promise<Credential[]>;
|