crewly 1.8.4 → 1.8.5
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/config/roles/_common/wiki-instructions.md +33 -0
- package/config/roles/orchestrator/prompt.md +35 -0
- package/config/roles/team-leader/prompt.md +38 -0
- package/config/skills/agent/core/wiki-query/SKILL.md +66 -0
- package/config/skills/agent/core/wiki-query/execute.sh +107 -0
- package/config/skills/orchestrator/wiki-bookkeep/SKILL.md +71 -0
- package/config/skills/orchestrator/wiki-bookkeep/execute.sh +72 -0
- package/config/skills/orchestrator/wiki-ingest/SKILL.md +63 -0
- package/config/skills/orchestrator/wiki-ingest/execute.sh +113 -0
- package/config/skills/orchestrator/wiki-process-queue/SKILL.md +71 -0
- package/config/skills/orchestrator/wiki-process-queue/execute.sh +93 -0
- package/config/skills/orchestrator/wiki-queue-add/SKILL.md +89 -0
- package/config/skills/orchestrator/wiki-queue-add/execute.sh +115 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +134 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +718 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts +23 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js +43 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +39 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +28 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +162 -4
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.d.ts +69 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.js +174 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.d.ts +57 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.js +183 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +86 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +187 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts +116 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js +299 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +74 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +154 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +100 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js +212 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts +84 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js +138 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts +115 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js +291 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts +115 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js +261 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.d.ts +84 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.js +10 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.js.map +1 -0
- package/frontend/dist/assets/{index-b279da34.js → index-cc115bb4.js} +246 -246
- package/frontend/dist/assets/{index-c07e04c0.css → index-db3f5041.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -11,6 +11,152 @@ import { execSync } from 'child_process';
|
|
|
11
11
|
import { DEFAULT_TERMINAL_COLS, DEFAULT_TERMINAL_ROWS, } from '../session-backend.interface.js';
|
|
12
12
|
import { PTY_CONSTANTS } from '../../../constants.js';
|
|
13
13
|
import { LoggerService } from '../../core/logger.service.js';
|
|
14
|
+
/**
|
|
15
|
+
* Test affordance: lets `pty-session.test.ts` swap in a stub instead of
|
|
16
|
+
* calling the real `pty.spawn`. Production code path is identical.
|
|
17
|
+
*/
|
|
18
|
+
let ptySpawnImpl = pty.spawn;
|
|
19
|
+
export function _setPtySpawnImplForTesting(impl) {
|
|
20
|
+
const previous = ptySpawnImpl;
|
|
21
|
+
ptySpawnImpl = impl;
|
|
22
|
+
return () => {
|
|
23
|
+
ptySpawnImpl = previous;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Retry policy for transient `pty.spawn` failures. The native node-pty
|
|
28
|
+
* binding throws a generic `Error("posix_spawnp failed.")` with no errno
|
|
29
|
+
* detail — on macOS this is usually EAGAIN (process table briefly
|
|
30
|
+
* saturated by Chrome helpers / VS Code extensions / build spawns) and
|
|
31
|
+
* retrying after a short pause succeeds. We give up after the 4th
|
|
32
|
+
* attempt and throw a richer diagnostic.
|
|
33
|
+
*
|
|
34
|
+
* Sync sleep uses `Atomics.wait` on an ephemeral SharedArrayBuffer —
|
|
35
|
+
* blocks the thread without spawning a `sleep(1)` subprocess (which
|
|
36
|
+
* would compound the very problem we're working around).
|
|
37
|
+
*/
|
|
38
|
+
const PTY_SPAWN_RETRY_BACKOFFS_MS = [0, 150, 400, 1000];
|
|
39
|
+
const PTY_TRANSIENT_ERROR_MARKERS = [
|
|
40
|
+
'posix_spawnp',
|
|
41
|
+
'EAGAIN',
|
|
42
|
+
'ENOMEM',
|
|
43
|
+
'EMFILE',
|
|
44
|
+
'ENFILE',
|
|
45
|
+
];
|
|
46
|
+
function isTransientSpawnError(err) {
|
|
47
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
48
|
+
return PTY_TRANSIENT_ERROR_MARKERS.some((m) => msg.includes(m));
|
|
49
|
+
}
|
|
50
|
+
function syncSleepMs(ms) {
|
|
51
|
+
if (ms <= 0)
|
|
52
|
+
return;
|
|
53
|
+
const buf = new SharedArrayBuffer(4);
|
|
54
|
+
const view = new Int32Array(buf);
|
|
55
|
+
// Wait returns 'timed-out' after `ms` regardless of view[0] (which
|
|
56
|
+
// nobody writes to). This is the modern synchronous sleep pattern
|
|
57
|
+
// recommended for situations where a busy-wait would burn CPU.
|
|
58
|
+
Atomics.wait(view, 0, 0, ms);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Read current user process count cheaply. Used in the spawn-failure
|
|
62
|
+
* diagnostic to tell the user if they're near macOS `kern.maxprocperuid`.
|
|
63
|
+
*/
|
|
64
|
+
function readUserProcessCount() {
|
|
65
|
+
try {
|
|
66
|
+
const out = execSync('ps -u "$(id -un)" 2>/dev/null | wc -l', {
|
|
67
|
+
encoding: 'utf8',
|
|
68
|
+
timeout: 800,
|
|
69
|
+
});
|
|
70
|
+
const n = parseInt(out.trim(), 10);
|
|
71
|
+
return Number.isFinite(n) ? n : null;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Read kern.maxprocperuid. macOS-specific; returns null on non-Darwin. */
|
|
78
|
+
function readMaxProcPerUid() {
|
|
79
|
+
if (process.platform !== 'darwin')
|
|
80
|
+
return null;
|
|
81
|
+
try {
|
|
82
|
+
const out = execSync('sysctl -n kern.maxprocperuid', {
|
|
83
|
+
encoding: 'utf8',
|
|
84
|
+
timeout: 500,
|
|
85
|
+
});
|
|
86
|
+
const n = parseInt(out.trim(), 10);
|
|
87
|
+
return Number.isFinite(n) ? n : null;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Wraps `pty.spawn` with retry-on-transient + actionable error.
|
|
95
|
+
*
|
|
96
|
+
* On the 4th and final failure, throws `PtySpawnExhaustedError` with a
|
|
97
|
+
* human-readable message + machine-readable diagnostics. Callers should
|
|
98
|
+
* surface the .message to the user (e.g. ORC → Slack).
|
|
99
|
+
*/
|
|
100
|
+
class PtySpawnExhaustedError extends Error {
|
|
101
|
+
diagnostics;
|
|
102
|
+
constructor(message, diagnostics) {
|
|
103
|
+
super(message);
|
|
104
|
+
this.diagnostics = diagnostics;
|
|
105
|
+
this.name = 'PtySpawnExhaustedError';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function spawnPtyWithRetry(command, args, options, logger) {
|
|
109
|
+
let lastError = null;
|
|
110
|
+
for (let attempt = 0; attempt < PTY_SPAWN_RETRY_BACKOFFS_MS.length; attempt++) {
|
|
111
|
+
const backoffMs = PTY_SPAWN_RETRY_BACKOFFS_MS[attempt];
|
|
112
|
+
if (backoffMs > 0) {
|
|
113
|
+
logger.warn('PTY spawn retry — sleeping then retrying', {
|
|
114
|
+
attempt,
|
|
115
|
+
backoffMs,
|
|
116
|
+
command,
|
|
117
|
+
});
|
|
118
|
+
syncSleepMs(backoffMs);
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
return ptySpawnImpl(command, args, options);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
lastError = err;
|
|
125
|
+
if (!isTransientSpawnError(err)) {
|
|
126
|
+
// Non-transient (e.g. ENOENT — command not found): fail fast.
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
// Else loop — backoff already happened next iter.
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Exhausted retries — build an actionable message.
|
|
133
|
+
const userProcessCount = readUserProcessCount();
|
|
134
|
+
const maxProcPerUid = readMaxProcPerUid();
|
|
135
|
+
const errMsg = lastError instanceof Error ? lastError.message : String(lastError);
|
|
136
|
+
let humanHint = '';
|
|
137
|
+
if (userProcessCount !== null &&
|
|
138
|
+
maxProcPerUid !== null &&
|
|
139
|
+
userProcessCount > maxProcPerUid * 0.75) {
|
|
140
|
+
humanHint = ` Your user process count is ${userProcessCount} / ${maxProcPerUid} (>75% of limit). Close some Chrome tabs / VS Code windows / other agent sessions and retry.`;
|
|
141
|
+
}
|
|
142
|
+
else if (process.platform === 'darwin') {
|
|
143
|
+
humanHint =
|
|
144
|
+
' Likely a transient kernel-level process-table spike (Chrome / VS Code / build tools spawning many helpers). Wait ~30 s and the next attempt should succeed; the OSS will auto-retry on the next user trigger.';
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
humanHint = ' Transient spawn failure — retry shortly.';
|
|
148
|
+
}
|
|
149
|
+
const message = `PTY spawn failed after ${PTY_SPAWN_RETRY_BACKOFFS_MS.length} attempts (${errMsg}).${humanHint}`;
|
|
150
|
+
throw new PtySpawnExhaustedError(message, {
|
|
151
|
+
attempts: PTY_SPAWN_RETRY_BACKOFFS_MS.length,
|
|
152
|
+
lastError: errMsg,
|
|
153
|
+
userProcessCount,
|
|
154
|
+
maxProcPerUid,
|
|
155
|
+
command,
|
|
156
|
+
platform: process.platform,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
export { PtySpawnExhaustedError };
|
|
14
160
|
/**
|
|
15
161
|
* PTY Session implementation using node-pty.
|
|
16
162
|
*
|
|
@@ -97,14 +243,18 @@ export class PtySession {
|
|
|
97
243
|
TERM: 'xterm-256color',
|
|
98
244
|
};
|
|
99
245
|
try {
|
|
100
|
-
// Spawn the PTY process
|
|
101
|
-
|
|
246
|
+
// Spawn the PTY process — wrapped in retry-with-backoff so that
|
|
247
|
+
// transient `posix_spawnp failed` errors (typical on macOS when
|
|
248
|
+
// Chrome / VS Code briefly saturate the process table) don't
|
|
249
|
+
// turn into user-visible spawn failures. See spawnPtyWithRetry
|
|
250
|
+
// for the policy + sync sleep pattern.
|
|
251
|
+
this.ptyProcess = spawnPtyWithRetry(options.command, options.args ?? [], {
|
|
102
252
|
name: 'xterm-256color',
|
|
103
253
|
cols: options.cols ?? DEFAULT_TERMINAL_COLS,
|
|
104
254
|
rows: options.rows ?? DEFAULT_TERMINAL_ROWS,
|
|
105
255
|
cwd: options.cwd,
|
|
106
256
|
env: sessionEnv,
|
|
107
|
-
});
|
|
257
|
+
}, this.logger);
|
|
108
258
|
this.logger.info('PTY process spawned successfully', {
|
|
109
259
|
name,
|
|
110
260
|
pid: this.ptyProcess.pid,
|
|
@@ -112,11 +262,19 @@ export class PtySession {
|
|
|
112
262
|
});
|
|
113
263
|
}
|
|
114
264
|
catch (spawnError) {
|
|
265
|
+
// `PtySpawnExhaustedError` carries the actionable hint already
|
|
266
|
+
// in its .message; other errors (e.g. ENOENT — command not
|
|
267
|
+
// found) propagate as-is. Either way we log richer context.
|
|
268
|
+
const errMsg = spawnError instanceof Error ? spawnError.message : String(spawnError);
|
|
269
|
+
const diagnostics = spawnError instanceof PtySpawnExhaustedError
|
|
270
|
+
? spawnError.diagnostics
|
|
271
|
+
: undefined;
|
|
115
272
|
this.logger.error('Failed to spawn PTY process', {
|
|
116
273
|
name,
|
|
117
274
|
command: options.command,
|
|
118
275
|
cwd: options.cwd,
|
|
119
|
-
error:
|
|
276
|
+
error: errMsg,
|
|
277
|
+
diagnostics,
|
|
120
278
|
stack: spawnError instanceof Error ? spawnError.stack : undefined,
|
|
121
279
|
});
|
|
122
280
|
throw spawnError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbolic `referenced_by:` resolver.
|
|
3
|
+
*
|
|
4
|
+
* SCHEMA.md `referenced_by:` entries use `<kind>:<name>` symbols
|
|
5
|
+
* (`skill:get-sops`, `service:sop.service`) rather than absolute filesystem
|
|
6
|
+
* paths, so SCHEMA.md stays portable across users, machines, and runtimes
|
|
7
|
+
* (Sonnet vs DeepSeek install roots differ, $HOME differs, Pro vs OSS install
|
|
8
|
+
* roots differ).
|
|
9
|
+
*
|
|
10
|
+
* This resolver maps a symbol to the absolute path on the current machine.
|
|
11
|
+
*
|
|
12
|
+
* Per v2.1 spec §2 (Symbolic referenced_by registry):
|
|
13
|
+
* `skill:<name>` → config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
14
|
+
* `service:<name>` → backend/src/services/<dir>/<name>.service.ts
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/referenced-by.resolver
|
|
17
|
+
*/
|
|
18
|
+
import { ReferencedBySymbol, ResolvedReference } from './wiki.types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Resolves SCHEMA.md `referenced_by:` symbols to absolute filesystem paths.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const resolver = new ReferencedByResolver('/path/to/crewly');
|
|
24
|
+
* const resolved = await resolver.resolve('skill:get-sops');
|
|
25
|
+
* // resolved.absolutePath === '/path/to/crewly/config/skills/agent/core/get-sops/execute.sh'
|
|
26
|
+
*/
|
|
27
|
+
export declare class ReferencedByResolver {
|
|
28
|
+
private readonly crewlyRoot;
|
|
29
|
+
private readonly cache;
|
|
30
|
+
/**
|
|
31
|
+
* @param crewlyRoot - Absolute path to the Crewly project root (contains
|
|
32
|
+
* `config/` and `backend/`). Must be absolute — relative paths are
|
|
33
|
+
* rejected so the resolver behaves deterministically regardless of cwd.
|
|
34
|
+
*/
|
|
35
|
+
constructor(crewlyRoot: string);
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a symbol to an absolute path.
|
|
38
|
+
*
|
|
39
|
+
* @param symbol - A `skill:<name>` or `service:<name>` reference.
|
|
40
|
+
* @returns The resolved reference. `exists: false` if no candidate file
|
|
41
|
+
* was found on disk — callers should treat this as a lint warning.
|
|
42
|
+
* @throws If the symbol has an unknown kind prefix.
|
|
43
|
+
*/
|
|
44
|
+
resolve(symbol: ReferencedBySymbol): Promise<ResolvedReference>;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve many symbols in one pass.
|
|
47
|
+
*/
|
|
48
|
+
resolveAll(symbols: ReferencedBySymbol[]): Promise<ResolvedReference[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Clear the in-memory cache. Useful in tests, or after a vault change
|
|
51
|
+
* has moved a referenced file.
|
|
52
|
+
*/
|
|
53
|
+
clearCache(): void;
|
|
54
|
+
private parseSymbol;
|
|
55
|
+
/**
|
|
56
|
+
* Locate a file matching `<name>/<fileSuffix>` (skill) or `<name><fileSuffix>`
|
|
57
|
+
* (service) inside a search directory. Returns absolute path or null.
|
|
58
|
+
*
|
|
59
|
+
* For skills: the name IS a directory name → look for `<dir>/<name>/execute.sh`.
|
|
60
|
+
* For services: the name is a basename → recurse for `<name>.service.ts`.
|
|
61
|
+
*/
|
|
62
|
+
private findInDir;
|
|
63
|
+
/**
|
|
64
|
+
* The path we'd expect a missing symbol to live at — used so lint can
|
|
65
|
+
* tell the user where to create the file.
|
|
66
|
+
*/
|
|
67
|
+
private fallbackCanonicalPath;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=referenced-by.resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-by.resolver.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/referenced-by.resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA4BxE;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAE9D;;;;OAIG;gBACS,UAAU,EAAE,MAAM;IAS9B;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsCrE;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI7E;;;OAGG;IACH,UAAU,IAAI,IAAI;IAQlB,OAAO,CAAC,WAAW;IA0BnB;;;;;;OAMG;YACW,SAAS;IAmCvB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbolic `referenced_by:` resolver.
|
|
3
|
+
*
|
|
4
|
+
* SCHEMA.md `referenced_by:` entries use `<kind>:<name>` symbols
|
|
5
|
+
* (`skill:get-sops`, `service:sop.service`) rather than absolute filesystem
|
|
6
|
+
* paths, so SCHEMA.md stays portable across users, machines, and runtimes
|
|
7
|
+
* (Sonnet vs DeepSeek install roots differ, $HOME differs, Pro vs OSS install
|
|
8
|
+
* roots differ).
|
|
9
|
+
*
|
|
10
|
+
* This resolver maps a symbol to the absolute path on the current machine.
|
|
11
|
+
*
|
|
12
|
+
* Per v2.1 spec §2 (Symbolic referenced_by registry):
|
|
13
|
+
* `skill:<name>` → config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
14
|
+
* `service:<name>` → backend/src/services/<dir>/<name>.service.ts
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/referenced-by.resolver
|
|
17
|
+
*/
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
import { existsSync } from 'fs';
|
|
20
|
+
import * as fs from 'fs/promises';
|
|
21
|
+
const SEARCH_PLANS = {
|
|
22
|
+
skill: {
|
|
23
|
+
// Skills live under config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
24
|
+
searchDirs: ['config/skills/agent/core', 'config/skills/orchestrator'],
|
|
25
|
+
fileSuffix: 'execute.sh',
|
|
26
|
+
},
|
|
27
|
+
service: {
|
|
28
|
+
// Symbol `service:sop.service` → file basename `sop.service.ts`. The `.service`
|
|
29
|
+
// segment is part of the symbol's name, so we only append `.ts` when forming
|
|
30
|
+
// the wanted filename. (Resolves backend/src/services/<area>/<name>.ts.)
|
|
31
|
+
searchDirs: ['backend/src/services'],
|
|
32
|
+
fileSuffix: '.ts',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Resolves SCHEMA.md `referenced_by:` symbols to absolute filesystem paths.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const resolver = new ReferencedByResolver('/path/to/crewly');
|
|
40
|
+
* const resolved = await resolver.resolve('skill:get-sops');
|
|
41
|
+
* // resolved.absolutePath === '/path/to/crewly/config/skills/agent/core/get-sops/execute.sh'
|
|
42
|
+
*/
|
|
43
|
+
export class ReferencedByResolver {
|
|
44
|
+
crewlyRoot;
|
|
45
|
+
cache = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* @param crewlyRoot - Absolute path to the Crewly project root (contains
|
|
48
|
+
* `config/` and `backend/`). Must be absolute — relative paths are
|
|
49
|
+
* rejected so the resolver behaves deterministically regardless of cwd.
|
|
50
|
+
*/
|
|
51
|
+
constructor(crewlyRoot) {
|
|
52
|
+
if (!path.isAbsolute(crewlyRoot)) {
|
|
53
|
+
throw new Error(`ReferencedByResolver: crewlyRoot must be absolute, got "${crewlyRoot}"`);
|
|
54
|
+
}
|
|
55
|
+
this.crewlyRoot = crewlyRoot;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Resolve a symbol to an absolute path.
|
|
59
|
+
*
|
|
60
|
+
* @param symbol - A `skill:<name>` or `service:<name>` reference.
|
|
61
|
+
* @returns The resolved reference. `exists: false` if no candidate file
|
|
62
|
+
* was found on disk — callers should treat this as a lint warning.
|
|
63
|
+
* @throws If the symbol has an unknown kind prefix.
|
|
64
|
+
*/
|
|
65
|
+
async resolve(symbol) {
|
|
66
|
+
const cached = this.cache.get(symbol);
|
|
67
|
+
if (cached) {
|
|
68
|
+
return cached;
|
|
69
|
+
}
|
|
70
|
+
const parsed = this.parseSymbol(symbol);
|
|
71
|
+
const plan = SEARCH_PLANS[parsed.kind];
|
|
72
|
+
let absolutePath = null;
|
|
73
|
+
let exists = false;
|
|
74
|
+
for (const dir of plan.searchDirs) {
|
|
75
|
+
const candidate = await this.findInDir(path.join(this.crewlyRoot, dir), parsed.name, plan.fileSuffix, parsed.kind);
|
|
76
|
+
if (candidate) {
|
|
77
|
+
absolutePath = candidate;
|
|
78
|
+
exists = true;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// If nothing found, emit a path that *would* be the canonical location
|
|
83
|
+
// so lint can surface a clear "expected here, missing" message.
|
|
84
|
+
if (!absolutePath) {
|
|
85
|
+
absolutePath = this.fallbackCanonicalPath(parsed.kind, parsed.name);
|
|
86
|
+
exists = existsSync(absolutePath);
|
|
87
|
+
}
|
|
88
|
+
const result = { symbol, absolutePath, exists };
|
|
89
|
+
this.cache.set(symbol, result);
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve many symbols in one pass.
|
|
94
|
+
*/
|
|
95
|
+
async resolveAll(symbols) {
|
|
96
|
+
return Promise.all(symbols.map((s) => this.resolve(s)));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Clear the in-memory cache. Useful in tests, or after a vault change
|
|
100
|
+
* has moved a referenced file.
|
|
101
|
+
*/
|
|
102
|
+
clearCache() {
|
|
103
|
+
this.cache.clear();
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Internals
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
parseSymbol(symbol) {
|
|
109
|
+
const colonIdx = symbol.indexOf(':');
|
|
110
|
+
if (colonIdx <= 0) {
|
|
111
|
+
throw new Error(`ReferencedByResolver: malformed symbol "${symbol}" — expected "<kind>:<name>"`);
|
|
112
|
+
}
|
|
113
|
+
const kind = symbol.slice(0, colonIdx);
|
|
114
|
+
const name = symbol.slice(colonIdx + 1);
|
|
115
|
+
if (!name) {
|
|
116
|
+
throw new Error(`ReferencedByResolver: empty name in symbol "${symbol}"`);
|
|
117
|
+
}
|
|
118
|
+
if (kind !== 'skill' && kind !== 'service') {
|
|
119
|
+
throw new Error(`ReferencedByResolver: unknown kind "${kind}" in symbol "${symbol}" — expected "skill" or "service"`);
|
|
120
|
+
}
|
|
121
|
+
return { kind, name };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Locate a file matching `<name>/<fileSuffix>` (skill) or `<name><fileSuffix>`
|
|
125
|
+
* (service) inside a search directory. Returns absolute path or null.
|
|
126
|
+
*
|
|
127
|
+
* For skills: the name IS a directory name → look for `<dir>/<name>/execute.sh`.
|
|
128
|
+
* For services: the name is a basename → recurse for `<name>.service.ts`.
|
|
129
|
+
*/
|
|
130
|
+
async findInDir(dir, name, suffix, kind) {
|
|
131
|
+
if (kind === 'skill') {
|
|
132
|
+
const candidate = path.join(dir, name, suffix);
|
|
133
|
+
return existsSync(candidate) ? candidate : null;
|
|
134
|
+
}
|
|
135
|
+
// Service: recurse one level looking for `<name>.service.ts`.
|
|
136
|
+
if (!existsSync(dir)) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const wantedFile = `${name}${suffix}`;
|
|
140
|
+
const stack = [dir];
|
|
141
|
+
while (stack.length > 0) {
|
|
142
|
+
const current = stack.pop();
|
|
143
|
+
const entries = await fs.readdir(current, { withFileTypes: true });
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
const full = path.join(current, entry.name);
|
|
146
|
+
if (entry.isDirectory()) {
|
|
147
|
+
// Skip test/build artifacts to keep the scan bounded.
|
|
148
|
+
if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name.startsWith('.')) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
stack.push(full);
|
|
152
|
+
}
|
|
153
|
+
else if (entry.isFile() && entry.name === wantedFile) {
|
|
154
|
+
return full;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The path we'd expect a missing symbol to live at — used so lint can
|
|
162
|
+
* tell the user where to create the file.
|
|
163
|
+
*/
|
|
164
|
+
fallbackCanonicalPath(kind, name) {
|
|
165
|
+
if (kind === 'skill') {
|
|
166
|
+
return path.join(this.crewlyRoot, 'config/skills/agent/core', name, 'execute.sh');
|
|
167
|
+
}
|
|
168
|
+
// Convention: `service:foo.service` → dir `foo`, file `foo.service.ts`.
|
|
169
|
+
// Fall back to using the full name as the dir if no `.service` suffix.
|
|
170
|
+
const areaDir = name.endsWith('.service') ? name.slice(0, -'.service'.length) : name;
|
|
171
|
+
return path.join(this.crewlyRoot, 'backend/src/services', areaDir, `${name}.ts`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=referenced-by.resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-by.resolver.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/referenced-by.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCHEMA.md loader + validator + frozen-path gate.
|
|
3
|
+
*
|
|
4
|
+
* Reads `<vault>/SCHEMA.md` (pure YAML inside a .md container), validates
|
|
5
|
+
* shape against `VaultSchema`, and exposes the frozen-path predicate used
|
|
6
|
+
* by `wiki-lint` to refuse restructure operations on OSS-pinned folders.
|
|
7
|
+
*
|
|
8
|
+
* Per v2.1 spec §2 (Hybrid folder architecture) — the `frozen: true` block
|
|
9
|
+
* is a HARD contract: any lint or ingest operation that targets a frozen
|
|
10
|
+
* path MUST fail closed.
|
|
11
|
+
*
|
|
12
|
+
* @module services/wiki/schema-loader.service
|
|
13
|
+
*/
|
|
14
|
+
import { VaultSchema } from './wiki.types.js';
|
|
15
|
+
/** Standard schema filename inside any vault root. */
|
|
16
|
+
export declare const SCHEMA_FILENAME = "SCHEMA.md";
|
|
17
|
+
/**
|
|
18
|
+
* Loads + validates a vault's SCHEMA.md. Stateless — instantiate once
|
|
19
|
+
* per service or use the static helper.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SchemaLoaderService {
|
|
22
|
+
/**
|
|
23
|
+
* Load and validate the SCHEMA.md inside a vault directory.
|
|
24
|
+
*
|
|
25
|
+
* @param vaultPath - Absolute path to the vault root (the directory
|
|
26
|
+
* containing SCHEMA.md). Must be absolute.
|
|
27
|
+
* @returns Validated VaultSchema.
|
|
28
|
+
* @throws If vaultPath is not absolute, SCHEMA.md is missing, YAML
|
|
29
|
+
* parsing fails, or the parsed object is shape-invalid.
|
|
30
|
+
*/
|
|
31
|
+
load(vaultPath: string): Promise<VaultSchema>;
|
|
32
|
+
/**
|
|
33
|
+
* Determine whether a path inside a vault is frozen (OSS-pinned).
|
|
34
|
+
*
|
|
35
|
+
* Used by `wiki-lint` and `wiki-ingest` to refuse restructure / write
|
|
36
|
+
* operations. Comparison is by leading path segment — e.g. `sop/foo.md`
|
|
37
|
+
* is frozen if `sop/` is declared frozen.
|
|
38
|
+
*
|
|
39
|
+
* @param schema - The vault's parsed schema.
|
|
40
|
+
* @param relativePath - Path relative to vault root, e.g. `sop/team-1.md`.
|
|
41
|
+
* @returns true if the path lives under a frozen folder.
|
|
42
|
+
*/
|
|
43
|
+
isFrozenPath(schema: VaultSchema, relativePath: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Return every frozen folder path declared in a schema. Convenience for
|
|
46
|
+
* lint reports.
|
|
47
|
+
*/
|
|
48
|
+
getFrozenPaths(schema: VaultSchema): string[];
|
|
49
|
+
private validate;
|
|
50
|
+
private requireScope;
|
|
51
|
+
private requireString;
|
|
52
|
+
private requireHardcoded;
|
|
53
|
+
private requireLlmCurated;
|
|
54
|
+
private requireWritePolicy;
|
|
55
|
+
private requireStringArray;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=schema-loader.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-loader.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/schema-loader.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAE1D,sDAAsD;AACtD,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;OAQG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BnD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAShE;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ7C,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,kBAAkB;CAW3B"}
|