@rubytech/create-realagent-code 0.1.7 → 0.1.9
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/index.js +31 -0
- package/package.json +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.js +23 -24
- package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -1
package/dist/index.js
CHANGED
|
@@ -1728,6 +1728,37 @@ function deployPayload() {
|
|
|
1728
1728
|
}
|
|
1729
1729
|
writeFileSync(credsMigratedStamp, new Date().toISOString() + "\n");
|
|
1730
1730
|
}
|
|
1731
|
+
// Task 019 — pre-populate the brand `.claude.json` so the manager's
|
|
1732
|
+
// PTY-spawned `claude --verbose --remote-control` boots straight into the
|
|
1733
|
+
// session URL without stopping at the first-run theme picker or the
|
|
1734
|
+
// workspace-trust dialog. Both prompts ate the manager's 30 s url-capture
|
|
1735
|
+
// window on 0.1.6 / 0.1.8 installs (Pi 192.168.88.16 verified). The two
|
|
1736
|
+
// markers required are:
|
|
1737
|
+
// - hasCompletedOnboarding: true (suppresses theme picker)
|
|
1738
|
+
// - projects[$HOME].hasTrustDialogAccepted: true
|
|
1739
|
+
// Existing fields (firstStartTime, oauthAccount, migrationVersion, …) are
|
|
1740
|
+
// preserved so a brand re-install does not clobber state written by claude
|
|
1741
|
+
// during the previous run.
|
|
1742
|
+
const claudeStateFile = join(persistentClaudeDir, ".claude.json");
|
|
1743
|
+
const homeWorkspace = process.env.HOME ?? "/root";
|
|
1744
|
+
let claudeState = {};
|
|
1745
|
+
if (existsSync(claudeStateFile)) {
|
|
1746
|
+
try {
|
|
1747
|
+
claudeState = JSON.parse(readFileSync(claudeStateFile, "utf-8"));
|
|
1748
|
+
}
|
|
1749
|
+
catch {
|
|
1750
|
+
claudeState = {};
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
claudeState.hasCompletedOnboarding = true;
|
|
1754
|
+
claudeState.theme = claudeState.theme ?? "auto";
|
|
1755
|
+
const projects = (claudeState.projects ?? {});
|
|
1756
|
+
const homeEntry = projects[homeWorkspace] ?? {};
|
|
1757
|
+
homeEntry.hasTrustDialogAccepted = true;
|
|
1758
|
+
projects[homeWorkspace] = homeEntry;
|
|
1759
|
+
claudeState.projects = projects;
|
|
1760
|
+
writeFileSync(claudeStateFile, JSON.stringify(claudeState, null, 2) + "\n", { mode: 0o600 });
|
|
1761
|
+
console.log(` [install] claude-state primed: ${claudeStateFile} hasCompletedOnboarding=true trustedWorkspace=${homeWorkspace}`);
|
|
1731
1762
|
// Brand isolation: installer does not read ~/.maxy/, ~/.cloudflared/, or
|
|
1732
1763
|
// ~/.cloudflare/ on non-default brands. These are peer-brand or shared-singleton
|
|
1733
1764
|
// paths (Task 659). Pre-Task-659 installs that need to recover legacy state
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ export async function spawnClaudeSession(deps, args) {
|
|
|
17
17
|
const start = Date.now();
|
|
18
18
|
let pty;
|
|
19
19
|
try {
|
|
20
|
-
pty = deps.spawnPty(deps.claudeBin, ['--verbose'], {
|
|
20
|
+
pty = deps.spawnPty(deps.claudeBin, ['--verbose', '--remote-control'], {
|
|
21
21
|
...process.env,
|
|
22
22
|
TERM: 'xterm-256color',
|
|
23
23
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-spawner.js","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,0DAA0D;AAC1D,0EAA0E;AAC1E,2EAA2E;AAC3E,eAAe;AACf,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAyBjD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAe,EAAE,IAAe;IACvE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,IAAI,GAAc,CAAA;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"pty-spawner.js","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-capture.d.ts","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-capture.d.ts","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AASnD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAwC/E"}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
// URL capture for `claude --verbose`.
|
|
1
|
+
// URL capture for `claude --verbose --remote-control`.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
// PTY stream:
|
|
3
|
+
// Claude Code v2.1.142 prints the line:
|
|
5
4
|
//
|
|
6
|
-
// /remote-control is active
|
|
5
|
+
// /remote-control is active
|
|
6
|
+
// <url>
|
|
7
7
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
// (verified on Pi 192.168.88.16 with claude --version 2.1.142). Older PRD
|
|
9
|
+
// drafts described a one-line `/remote-control is active · <url>` shape with
|
|
10
|
+
// a U+00B7 middle-dot separator; the regex below accepts both so a future
|
|
11
|
+
// claude release reverting to that form does not break capture.
|
|
12
|
+
//
|
|
13
|
+
// We accumulate onData chunks into a buffer so a multi-byte split across
|
|
14
|
+
// two callbacks still matches. After the first URL is captured, the handler
|
|
15
|
+
// unregisters itself so subsequent PTY bytes flow through unchanged.
|
|
16
|
+
// Matches both:
|
|
17
|
+
// /remote-control is active · https://claude.ai/code/...
|
|
18
|
+
// /remote-control is active\n…ANSI…\nhttps://claude.ai/code/...
|
|
19
|
+
// PTY output is heavily ANSI-escaped, so `[\s\S]*?` tolerates intervening
|
|
20
|
+
// cursor moves, colour codes, and box-draw characters before the URL.
|
|
21
|
+
const URL_PATTERN = /\/remote-control is active[\s\S]*?(https?:\/\/\S+)/;
|
|
14
22
|
export function startUrlCapture(opts) {
|
|
15
23
|
const start = Date.now();
|
|
16
24
|
let buffer = '';
|
|
@@ -28,21 +36,12 @@ export function startUrlCapture(opts) {
|
|
|
28
36
|
if (settled)
|
|
29
37
|
return;
|
|
30
38
|
buffer += data;
|
|
31
|
-
const
|
|
32
|
-
if (idx === -1) {
|
|
33
|
-
// Keep the tail so a split across two chunks still matches.
|
|
34
|
-
const keep = TERMINATOR.length * 4;
|
|
35
|
-
if (buffer.length > keep) {
|
|
36
|
-
buffer = buffer.slice(buffer.length - keep);
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const tail = buffer.slice(idx + TERMINATOR.length);
|
|
41
|
-
const match = tail.match(URL_PATTERN);
|
|
39
|
+
const match = buffer.match(URL_PATTERN);
|
|
42
40
|
if (!match) {
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
buffer
|
|
41
|
+
// Cap the buffer so PTY scroll output does not grow unbounded.
|
|
42
|
+
const keep = 16 * 1024;
|
|
43
|
+
if (buffer.length > keep)
|
|
44
|
+
buffer = buffer.slice(buffer.length - keep);
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
48
47
|
settled = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-capture.js","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"url-capture.js","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,gCAAgC;AAChC,YAAY;AACZ,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,0EAA0E;AAC1E,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AAIrE,gBAAgB;AAChB,2DAA2D;AAC3D,kEAAkE;AAClE,0EAA0E;AAC1E,sEAAsE;AACtE,MAAM,WAAW,GAAG,oDAAoD,CAAA;AAUxE,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,GAA+B,IAAI,CAAA;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,OAAO;YAAE,OAAM;QACnB,MAAM,IAAI,IAAI,CAAA;QACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,+DAA+D;YAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAA;YACtB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;gBAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACrE,OAAM;QACR,CAAC;QACD,OAAO,GAAG,IAAI,CAAA;QACd,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAChC,CAAC;KACF,CAAA;AACH,CAAC"}
|