crewly 1.20.430 → 1.20.431
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/skills/agent/core/reproduce-ui/SKILL.md +84 -0
- package/config/skills/agent/core/reproduce-ui/execute.sh +100 -0
- package/config/skills/agent/core/reproduce-ui/execute.test.sh +123 -0
- package/config/skills/agent/core/reproduce-ui/reproduce.mjs +366 -0
- package/config/sops/developer/debugging.md +4 -2
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +5 -2
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/core/dashboard-build.d.ts +20 -0
- package/dist/backend/backend/src/services/core/dashboard-build.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/dashboard-build.js +38 -0
- package/dist/backend/backend/src/services/core/dashboard-build.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/package.json +1 -1
|
@@ -19,6 +19,26 @@ import type { RequestHandler } from 'express';
|
|
|
19
19
|
* @returns e.g. `/assets/index-b91a9801.js`, or null for a dev / unbuilt page
|
|
20
20
|
*/
|
|
21
21
|
export declare function parseDashboardEntry(html: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* CSP hash sources of the inline scripts of a built `index.html`.
|
|
24
|
+
*
|
|
25
|
+
* The page themes itself before first paint with an inline script
|
|
26
|
+
* (`THEME_INIT_SCRIPT`); the Content-Security-Policy is `script-src 'self'`,
|
|
27
|
+
* which blocks inline scripts unless their hash is listed. The hash is of
|
|
28
|
+
* the script body exactly as served, so it is computed from the file
|
|
29
|
+
* rather than written down (a changed script would silently stop running).
|
|
30
|
+
*
|
|
31
|
+
* @param html - index.html content
|
|
32
|
+
* @returns e.g. `["'sha256-…'"]` — one per inline script, in order
|
|
33
|
+
*/
|
|
34
|
+
export declare function inlineScriptHashes(html: string): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Read the inline-script CSP hashes of the dashboard this backend serves.
|
|
37
|
+
*
|
|
38
|
+
* @param indexHtmlPath - Path of `frontend/dist/index.html`
|
|
39
|
+
* @returns The hash sources, [] when there is no built dashboard
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadInlineScriptHashes(indexHtmlPath: string): string[];
|
|
22
42
|
/**
|
|
23
43
|
* Read the entry script of the dashboard this backend serves.
|
|
24
44
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-build.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/core/dashboard-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"dashboard-build.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/core/dashboard-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAC;AAG/E;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAMtE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAKzE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEpH"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* @module services/core/dashboard-build
|
|
13
13
|
*/
|
|
14
14
|
import * as fs from 'fs';
|
|
15
|
+
import { createHash } from 'crypto';
|
|
15
16
|
import { OWNER_AUTH_CONSTANTS } from '../../constants.js';
|
|
16
17
|
/**
|
|
17
18
|
* The entry script of a built `index.html`.
|
|
@@ -29,6 +30,43 @@ export function parseDashboardEntry(html) {
|
|
|
29
30
|
}
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* CSP hash sources of the inline scripts of a built `index.html`.
|
|
35
|
+
*
|
|
36
|
+
* The page themes itself before first paint with an inline script
|
|
37
|
+
* (`THEME_INIT_SCRIPT`); the Content-Security-Policy is `script-src 'self'`,
|
|
38
|
+
* which blocks inline scripts unless their hash is listed. The hash is of
|
|
39
|
+
* the script body exactly as served, so it is computed from the file
|
|
40
|
+
* rather than written down (a changed script would silently stop running).
|
|
41
|
+
*
|
|
42
|
+
* @param html - index.html content
|
|
43
|
+
* @returns e.g. `["'sha256-…'"]` — one per inline script, in order
|
|
44
|
+
*/
|
|
45
|
+
export function inlineScriptHashes(html) {
|
|
46
|
+
const out = [];
|
|
47
|
+
const re = /<script\b([^>]*)>([\s\S]*?)<\/script>/gi;
|
|
48
|
+
let m;
|
|
49
|
+
while ((m = re.exec(html)) !== null) {
|
|
50
|
+
if (/\bsrc=/i.test(m[1]) || m[2].trim() === '')
|
|
51
|
+
continue;
|
|
52
|
+
out.push(`'sha256-${createHash('sha256').update(m[2], 'utf8').digest('base64')}'`);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read the inline-script CSP hashes of the dashboard this backend serves.
|
|
58
|
+
*
|
|
59
|
+
* @param indexHtmlPath - Path of `frontend/dist/index.html`
|
|
60
|
+
* @returns The hash sources, [] when there is no built dashboard
|
|
61
|
+
*/
|
|
62
|
+
export function loadInlineScriptHashes(indexHtmlPath) {
|
|
63
|
+
try {
|
|
64
|
+
return inlineScriptHashes(fs.readFileSync(indexHtmlPath, 'utf8'));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
32
70
|
/**
|
|
33
71
|
* Read the entry script of the dashboard this backend serves.
|
|
34
72
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-build.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/dashboard-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-build.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/dashboard-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,GAAG,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,GAAG,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,yCAAyC,CAAC;IACrD,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACzD,GAAG,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAAqB;IAC1D,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,OAAO,CAAC,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAChE,IAAI,KAAK;YAAE,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7G,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crewly",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.431",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
|
|
6
6
|
"workspaces": [
|