@rubytech/create-maxy-code 0.1.411 → 0.1.414
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/__tests__/installer-cwd-pin-and-auth-verify.test.js +82 -0
- package/dist/index.js +44 -5
- package/package.json +1 -1
- package/payload/platform/lib/account-scope/dist/index.d.ts +27 -0
- package/payload/platform/lib/account-scope/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/account-scope/dist/index.js +33 -0
- package/payload/platform/lib/account-scope/dist/index.js.map +1 -0
- package/payload/platform/lib/account-scope/src/index.ts +43 -0
- package/payload/platform/lib/account-scope/tsconfig.json +5 -0
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
- package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +1 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +37 -1
- package/payload/platform/plugins/business-assistant/skills/e-sign/SKILL.md +2 -0
- package/payload/platform/plugins/docs/references/cross-account-authority.md +25 -0
- package/payload/platform/plugins/docs/references/memory-guide.md +6 -0
- package/payload/platform/plugins/filesystem/.claude-plugin/plugin.json +21 -0
- package/payload/platform/plugins/filesystem/PLUGIN.md +63 -0
- package/payload/platform/plugins/filesystem/lib/mcp-spawn-tee/index.js +193 -0
- package/payload/platform/plugins/filesystem/lib/mcp-spawn-tee/package.json +3 -0
- package/payload/platform/plugins/filesystem/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/filesystem/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/index.js +91 -0
- package/payload/platform/plugins/filesystem/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/scope.test.d.ts +2 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/scope.test.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/scope.test.js +89 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/scope.test.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/result.d.ts +12 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/result.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/result.js +6 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/result.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.d.ts +45 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.js +86 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/walk.d.ts +11 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/walk.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/walk.js +64 -0
- package/payload/platform/plugins/filesystem/mcp/dist/lib/walk.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/handlers.test.d.ts +2 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/handlers.test.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/handlers.test.js +94 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/handlers.test.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.d.ts +8 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.js +40 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-glob.d.ts +6 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-glob.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-glob.js +13 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-glob.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-grep.d.ts +7 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-grep.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-grep.js +71 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-grep.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-list.d.ts +6 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-list.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-list.js +26 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-list.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.d.ts +6 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.js +28 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.d.ts +7 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.d.ts.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js +25 -0
- package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js.map +1 -0
- package/payload/platform/plugins/filesystem/mcp/package.json +21 -0
- package/payload/platform/plugins/filesystem/mcp/vitest.config.ts +8 -0
- package/payload/platform/plugins/memory/PLUGIN.md +8 -0
- package/payload/platform/plugins/memory/mcp/dist/index-testable.d.ts +34 -0
- package/payload/platform/plugins/memory/mcp/dist/index-testable.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/index-testable.js +60 -0
- package/payload/platform/plugins/memory/mcp/dist/index-testable.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js +327 -146
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/resolve-owner-userid.d.ts +15 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/resolve-owner-userid.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/resolve-owner-userid.js +29 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/resolve-owner-userid.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-owner-userid.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-owner-userid.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-owner-userid.test.js +40 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-owner-userid.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-tool-account.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-tool-account.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-tool-account.test.js +54 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/resolve-tool-account.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +11 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +13 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
- package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +2 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +7 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.js +6 -1
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/claude-keychain-write.d.ts +7 -1
- package/payload/platform/services/claude-session-manager/dist/claude-keychain-write.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/claude-keychain-write.js +7 -2
- package/payload/platform/services/claude-session-manager/dist/claude-keychain-write.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.d.ts +37 -0
- package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.js +34 -1
- package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/cross-account-census.d.ts +34 -0
- package/payload/platform/services/claude-session-manager/dist/cross-account-census.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/cross-account-census.js +98 -0
- package/payload/platform/services/claude-session-manager/dist/cross-account-census.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +10 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +17 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +25 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +7 -0
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +8 -0
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
- package/payload/server/{chunk-ZYS5V5QG.js → chunk-3Z5WE53X.js} +4 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-BRQgI2lW.js → AdminLoginScreens-CYPTMmTk.js} +1 -1
- package/payload/server/public/assets/{AdminShell-By9n5icG.js → AdminShell-CZH_EZIy.js} +1 -1
- package/payload/server/public/assets/{Checkbox-DjEWgYu1.js → Checkbox-B0pbYJDQ.js} +1 -1
- package/payload/server/public/assets/{Transcript-BejWvOaO.js → Transcript-CYaAPBFX.js} +1 -1
- package/payload/server/public/assets/{admin-BFEMryQm.js → admin-BKDMSRto.js} +1 -1
- package/payload/server/public/assets/{browser-CMJMEUz6.js → browser-CxeMDDZA.js} +1 -1
- package/payload/server/public/assets/{calendar-C6ZGlHEP.js → calendar-DiIiTY9-.js} +1 -1
- package/payload/server/public/assets/chat-C56Oqvt1.js +1 -0
- package/payload/server/public/assets/chevron-left-Da-iZGi_.js +1 -0
- package/payload/server/public/assets/data-ZUdT44Ba.js +1 -0
- package/payload/server/public/assets/{graph-DIrXtPLv.js → graph-DC3dwnMZ.js} +1 -1
- package/payload/server/public/assets/{graph-labels-BtPf1Jom.js → graph-labels-Csnovm_c.js} +1 -1
- package/payload/server/public/assets/{maximize-2-DeJ4K8kL.js → maximize-2-WRUJsg5n.js} +1 -1
- package/payload/server/public/assets/{operator-B8QhqzLI.js → operator-BpzeHTAw.js} +1 -1
- package/payload/server/public/assets/{page-iFOy0dFx.js → page-8jJOxx6y.js} +1 -1
- package/payload/server/public/assets/{page-Df6KYkf4.js → page-IQDLdebG.js} +1 -1
- package/payload/server/public/assets/{public-BrUIRQZd.js → public-Dqg7jwjq.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-CYfntpwu.js → rotate-ccw-BayMWwfc.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-Cvnc_fwQ.css → useSubAccountSwitcher-CRZfyJXR.css} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +5 -5
- package/payload/server/public/chat.html +9 -9
- package/payload/server/public/data.html +8 -8
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +11 -11
- package/payload/server/public/operator.html +11 -11
- package/payload/server/public/public.html +9 -9
- package/payload/server/server.js +72 -15
- package/payload/server/public/assets/chat-B7s62Nnp.js +0 -1
- package/payload/server/public/assets/chevron-left-Dfjcaiyr.js +0 -1
- package/payload/server/public/assets/data-741ZbBwR.js +0 -1
- /package/payload/server/public/assets/{useSubAccountSwitcher-BK_KfOLC.js → useSubAccountSwitcher-C9aLg8yI.js} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** The census line. `violation-ids=-` (not empty) marks "no offenders" so the
|
|
2
|
+
* field is always present and greppable. `plugins-adopted=n/target` reads the
|
|
3
|
+
* ledger's adopted count; `n<target` is the coverage-regression alarm. */
|
|
4
|
+
export declare function formatXacctCensus(input: {
|
|
5
|
+
sessions: number;
|
|
6
|
+
houseScoped: number;
|
|
7
|
+
violations: string[];
|
|
8
|
+
pluginsAdopted: number;
|
|
9
|
+
pluginsTarget: number;
|
|
10
|
+
}): string;
|
|
11
|
+
export interface XacctCensusDeps {
|
|
12
|
+
/** Directory holding live `<sessionId>.meta.json` sidecars. */
|
|
13
|
+
projectsDir: string;
|
|
14
|
+
/** Parent-of-`platform` install dir passthrough for `isHouseAccount`. */
|
|
15
|
+
platformRoot: string;
|
|
16
|
+
/** Ledger adopted-count and target (both 0 at foundation). */
|
|
17
|
+
adopted: number;
|
|
18
|
+
target: number;
|
|
19
|
+
logger: (line: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/** Read every live sidecar and assert `houseAdminScope != null ⟹ the account is
|
|
22
|
+
* currently house`. Best-effort: an unreadable projects dir degrades to a zero
|
|
23
|
+
* line rather than throwing (the manager may census before the dir exists). */
|
|
24
|
+
export declare function emitXacctCensus(deps: XacctCensusDeps): void;
|
|
25
|
+
export interface XacctCensus {
|
|
26
|
+
start(): void;
|
|
27
|
+
stop(): void;
|
|
28
|
+
}
|
|
29
|
+
/** Standing periodic audit. Unref'd interval so it never holds the process
|
|
30
|
+
* open; each tick re-emits the census best-effort. */
|
|
31
|
+
export declare function createXacctCensus(deps: XacctCensusDeps & {
|
|
32
|
+
intervalMs: number;
|
|
33
|
+
}): XacctCensus;
|
|
34
|
+
//# sourceMappingURL=cross-account-census.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-account-census.d.ts","sourceRoot":"","sources":["../src/cross-account-census.ts"],"names":[],"mappings":"AA8BA;;2EAE2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,MAAM,CAGT;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED;;gFAEgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAoC3D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;CACb;AAED;uDACuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAmB7F"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Task 1440 — standing cross-account census. A role:"admin" session that carries
|
|
2
|
+
// HOUSE_ADMIN_SCOPE but whose account is no longer role:"house" holds
|
|
3
|
+
// cross-account authority it must not have (the escalation precursor). That
|
|
4
|
+
// state emits no event and no error — the account role is runtime-mutable via
|
|
5
|
+
// the lifecycle tools, so a session scoped when its account was house keeps its
|
|
6
|
+
// env after the account is demoted. An independent periodic audit over the
|
|
7
|
+
// on-disk sidecars is the only signal. Shape mirrors rootless-client-audit.ts: a
|
|
8
|
+
// pure formatter (unit-tested) + an impure collector (best-effort, never throws)
|
|
9
|
+
// + a start/stop factory whose setInterval is unref'd.
|
|
10
|
+
//
|
|
11
|
+
// Two coverage bounds are deferred to Task 1457 (census hardening):
|
|
12
|
+
// 1. It scans one projects dir (the boot house account's). A runtime house
|
|
13
|
+
// handover WITHOUT a manager restart could land a new house-admin session
|
|
14
|
+
// under a different account's projects dir this tick never scans. The
|
|
15
|
+
// common case (single house, no live re-designation) is fully covered
|
|
16
|
+
// because every house-scoped session runs on the boot house account.
|
|
17
|
+
// 2. It reads every non-archived sidecar, not only live PTYs. A house-admin
|
|
18
|
+
// session that exited without being archived is still counted; it only
|
|
19
|
+
// becomes a false *violation* after a subsequent house demotion. Counts
|
|
20
|
+
// (sessions/house-scoped) may over-report until such rows are archived.
|
|
21
|
+
// Both bias toward over-reporting (fail-loud), never toward missing a live
|
|
22
|
+
// escalation in the common single-house case.
|
|
23
|
+
import { readdirSync } from 'node:fs';
|
|
24
|
+
import { join, basename } from 'node:path';
|
|
25
|
+
import { readSidecar } from './session-sidecar.js';
|
|
26
|
+
import { resolveAccountDir } from './config.js';
|
|
27
|
+
const TAG = '[xacct-census]';
|
|
28
|
+
/** The census line. `violation-ids=-` (not empty) marks "no offenders" so the
|
|
29
|
+
* field is always present and greppable. `plugins-adopted=n/target` reads the
|
|
30
|
+
* ledger's adopted count; `n<target` is the coverage-regression alarm. */
|
|
31
|
+
export function formatXacctCensus(input) {
|
|
32
|
+
const ids = input.violations.length ? input.violations.join(',') : '-';
|
|
33
|
+
return `${TAG} sessions=${input.sessions} house-scoped=${input.houseScoped} violations=${input.violations.length} violation-ids=${ids} plugins-adopted=${input.pluginsAdopted}/${input.pluginsTarget}`;
|
|
34
|
+
}
|
|
35
|
+
/** Read every live sidecar and assert `houseAdminScope != null ⟹ the account is
|
|
36
|
+
* currently house`. Best-effort: an unreadable projects dir degrades to a zero
|
|
37
|
+
* line rather than throwing (the manager may census before the dir exists). */
|
|
38
|
+
export function emitXacctCensus(deps) {
|
|
39
|
+
let entries;
|
|
40
|
+
try {
|
|
41
|
+
entries = readdirSync(deps.projectsDir).filter((n) => n.endsWith('.meta.json'));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
deps.logger(`${TAG} sessions=0 house-scoped=0 violations=0 violation-ids=- plugins-adopted=${deps.adopted}/${deps.target} reason=no-projects-dir`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Resolve the current house account once per tick (the invariant is constant
|
|
48
|
+
// across the scan); null on genuine registry drift (zero/multiple houses),
|
|
49
|
+
// which makes every explicit-accountId house-scoped session read as a
|
|
50
|
+
// violation — the correct fail-loud response to a broken house registry.
|
|
51
|
+
const houseDir = resolveAccountDir(deps.platformRoot);
|
|
52
|
+
const houseId = houseDir ? basename(houseDir) : null;
|
|
53
|
+
let sessions = 0;
|
|
54
|
+
let houseScoped = 0;
|
|
55
|
+
const violations = [];
|
|
56
|
+
for (const name of entries) {
|
|
57
|
+
const { sidecar } = readSidecar(join(deps.projectsDir, name), () => { });
|
|
58
|
+
if (!sidecar)
|
|
59
|
+
continue;
|
|
60
|
+
sessions++;
|
|
61
|
+
if (!sidecar.houseAdminScope)
|
|
62
|
+
continue;
|
|
63
|
+
houseScoped++;
|
|
64
|
+
// A null accountId is the house-default sidecar: the session runs on the
|
|
65
|
+
// current house account by definition, so it can never drift out of house
|
|
66
|
+
// and is never a violation. Only an explicit accountId that is no longer the
|
|
67
|
+
// house account is the escalation precursor.
|
|
68
|
+
if (sidecar.accountId && sidecar.accountId !== houseId) {
|
|
69
|
+
violations.push(basename(name).replace(/\.meta\.json$/, '').slice(0, 8));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
deps.logger(formatXacctCensus({ sessions, houseScoped, violations, pluginsAdopted: deps.adopted, pluginsTarget: deps.target }));
|
|
73
|
+
}
|
|
74
|
+
/** Standing periodic audit. Unref'd interval so it never holds the process
|
|
75
|
+
* open; each tick re-emits the census best-effort. */
|
|
76
|
+
export function createXacctCensus(deps) {
|
|
77
|
+
let timer = null;
|
|
78
|
+
return {
|
|
79
|
+
start() {
|
|
80
|
+
if (timer)
|
|
81
|
+
return;
|
|
82
|
+
// Emit once at boot (like the rootless audit) so the standing signal has a
|
|
83
|
+
// baseline immediately and an install that flaps inside the interval still
|
|
84
|
+
// produces at least one line.
|
|
85
|
+
emitXacctCensus(deps);
|
|
86
|
+
timer = setInterval(() => emitXacctCensus(deps), deps.intervalMs);
|
|
87
|
+
if (typeof timer.unref === 'function')
|
|
88
|
+
timer.unref();
|
|
89
|
+
},
|
|
90
|
+
stop() {
|
|
91
|
+
if (timer) {
|
|
92
|
+
clearInterval(timer);
|
|
93
|
+
timer = null;
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cross-account-census.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-account-census.js","sourceRoot":"","sources":["../src/cross-account-census.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,sEAAsE;AACtE,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,uDAAuD;AACvD,EAAE;AACF,oEAAoE;AACpE,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,8CAA8C;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,GAAG,GAAG,gBAAgB,CAAA;AAE5B;;2EAE2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,KAMjC;IACC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACtE,OAAO,GAAG,GAAG,aAAa,KAAK,CAAC,QAAQ,iBAAiB,KAAK,CAAC,WAAW,eAAe,KAAK,CAAC,UAAU,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,CAAA;AACxM,CAAC;AAaD;;gFAEgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAqB;IACnD,IAAI,OAAiB,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,MAAM,CACT,GAAG,GAAG,2EAA2E,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,yBAAyB,CACtI,CAAA;QACD,OAAM;IACR,CAAC;IACD,6EAA6E;IAC7E,2EAA2E;IAC3E,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,QAAQ,EAAE,CAAA;QACV,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE,SAAQ;QACtC,WAAW,EAAE,CAAA;QACb,yEAAyE;QACzE,0EAA0E;QAC1E,6EAA6E;QAC7E,6CAA6C;QAC7C,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CACT,iBAAiB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CACnH,CAAA;AACH,CAAC;AAOD;uDACuD;AACvD,MAAM,UAAU,iBAAiB,CAAC,IAA8C;IAC9E,IAAI,KAAK,GAA0B,IAAI,CAAA;IACvC,OAAO;QACL,KAAK;YACH,IAAI,KAAK;gBAAE,OAAM;YACjB,2EAA2E;YAC3E,2EAA2E;YAC3E,8BAA8B;YAC9B,eAAe,CAAC,IAAI,CAAC,CAAA;YACrB,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YACjE,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAA;QACtD,CAAC;QACD,IAAI;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAA;gBACpB,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AA+BzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAyFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,WAAW,EAAE,kBAAkB,CAAA;IAC/B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAsFD;;;;;;mEAMmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC9D;AAMD;;;;;;iBAMiB;AACjB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAmCvF;AAID;;;;;;yBAMyB;AACzB,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiCzD;AAkCD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AA8CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA6yFpD"}
|
|
@@ -37,6 +37,7 @@ import { writeScopeRecord, removeScopeRecord, readAllScopeRecords } from './scop
|
|
|
37
37
|
import { writeReseatMarker, resolveReseatChain, clearReseatMarker } from './reseat-ledger.js';
|
|
38
38
|
import { getScopeMainPid, defaultProcessSignals, defaultSystemctlRunner } from './systemd-scope.js';
|
|
39
39
|
import { readSidecar, updateSidecar, appendBridgeId, writeSidecar } from './session-sidecar.js';
|
|
40
|
+
import { houseAdminScopeFor, isHouseAccount } from './config.js';
|
|
40
41
|
import { resolveSettingsPermissionMode, resolveSettingsModel, resolveSettingsEffort } from './settings-permission-mode.js';
|
|
41
42
|
import { emitRcLife } from './rc-life.js';
|
|
42
43
|
import { createRcChildLog } from './rc-child-log.js';
|
|
@@ -2997,6 +2998,15 @@ export function buildHttpApp(deps) {
|
|
|
2997
2998
|
// Task 983 — scope this session to the resolved account so the
|
|
2998
2999
|
// admin shell's switcher can filter the session list by account.
|
|
2999
3000
|
accountId: effectiveAccountId,
|
|
3001
|
+
// Task 1440 — mirror the spawn-time house-scope decision (same
|
|
3002
|
+
// function the env injection uses) for the cross-account census.
|
|
3003
|
+
// rc-spawn sessions are never specialists.
|
|
3004
|
+
houseAdminScope: houseAdminScopeFor({
|
|
3005
|
+
role: rcRole,
|
|
3006
|
+
accountId: effectiveAccountId,
|
|
3007
|
+
isHouse: isHouseAccount(deps.platformRoot, effectiveAccountId),
|
|
3008
|
+
isSpecialist: false,
|
|
3009
|
+
}),
|
|
3000
3010
|
}, deps.logger);
|
|
3001
3011
|
deps.watcher.refreshSidecar?.(sessionId);
|
|
3002
3012
|
}
|