@intentic/sandbox-contract 1.332.0 → 1.333.1
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/README.md +8 -1
- package/dist/contracts/agent.contract.d.ts +1 -0
- package/dist/contracts/agent.contract.d.ts.map +1 -1
- package/dist/contracts/automations.contract.d.ts +1 -0
- package/dist/contracts/automations.contract.d.ts.map +1 -1
- package/dist/contracts/needs.contract.d.ts +29 -1
- package/dist/contracts/needs.contract.d.ts.map +1 -1
- package/dist/contracts/needs.contract.js +2 -2
- package/dist/contracts/needs.contract.js.map +1 -1
- package/dist/contracts/runner.contract.d.ts.map +1 -1
- package/dist/contracts/runner.contract.js +2 -2
- package/dist/contracts/runner.contract.js.map +1 -1
- package/dist/contracts/settings.contract.d.ts +34 -0
- package/dist/contracts/settings.contract.d.ts.map +1 -1
- package/dist/ids/project-dir.d.ts +1 -0
- package/dist/ids/project-dir.d.ts.map +1 -1
- package/dist/ids/project-dir.js +7 -0
- package/dist/ids/project-dir.js.map +1 -1
- package/dist/index.d.ts +114 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/models/model-roles.d.ts +8 -0
- package/dist/models/model-roles.d.ts.map +1 -1
- package/dist/models/model-roles.js +8 -0
- package/dist/models/model-roles.js.map +1 -1
- package/dist/policy/control-scopes.d.ts +47 -0
- package/dist/policy/control-scopes.d.ts.map +1 -1
- package/dist/policy/control-scopes.js +16 -0
- package/dist/policy/control-scopes.js.map +1 -1
- package/dist/policy/device-programs.d.ts +28 -0
- package/dist/policy/device-programs.d.ts.map +1 -0
- package/dist/policy/device-programs.js +79 -0
- package/dist/policy/device-programs.js.map +1 -0
- package/dist/policy/identity-assertion.d.ts +27 -0
- package/dist/policy/identity-assertion.d.ts.map +1 -0
- package/dist/policy/identity-assertion.js +77 -0
- package/dist/policy/identity-assertion.js.map +1 -0
- package/dist/policy/sandbox-power.d.ts +34 -0
- package/dist/policy/sandbox-power.d.ts.map +1 -0
- package/dist/policy/sandbox-power.js +146 -0
- package/dist/policy/sandbox-power.js.map +1 -0
- package/dist/protocol/doors/runner-protocol.d.ts +36 -0
- package/dist/protocol/doors/runner-protocol.d.ts.map +1 -1
- package/dist/protocol/doors/runner-protocol.js +2 -0
- package/dist/protocol/doors/runner-protocol.js.map +1 -1
- package/dist/protocol/raw/raw-json-routes.d.ts +839 -1
- package/dist/protocol/raw/raw-json-routes.d.ts.map +1 -1
- package/dist/protocol/raw/raw-json-routes.js +60 -2
- package/dist/protocol/raw/raw-json-routes.js.map +1 -1
- package/dist/protocol/raw/raw-routes.d.ts +9 -0
- package/dist/protocol/raw/raw-routes.d.ts.map +1 -1
- package/dist/protocol/raw/raw-routes.js +3 -0
- package/dist/protocol/raw/raw-routes.js.map +1 -1
- package/dist/schemas/agent.d.ts +3 -0
- package/dist/schemas/agent.d.ts.map +1 -1
- package/dist/schemas/automations.d.ts +1 -0
- package/dist/schemas/automations.d.ts.map +1 -1
- package/dist/schemas/automations.js +8 -2
- package/dist/schemas/automations.js.map +1 -1
- package/dist/schemas/device-swaps.d.ts +19 -0
- package/dist/schemas/device-swaps.d.ts.map +1 -0
- package/dist/schemas/device-swaps.js +11 -0
- package/dist/schemas/device-swaps.js.map +1 -0
- package/dist/schemas/environment.d.ts +7 -0
- package/dist/schemas/environment.d.ts.map +1 -1
- package/dist/schemas/environment.js +2 -0
- package/dist/schemas/environment.js.map +1 -1
- package/dist/schemas/members.d.ts +4 -0
- package/dist/schemas/members.d.ts.map +1 -1
- package/dist/schemas/members.js +5 -0
- package/dist/schemas/members.js.map +1 -1
- package/dist/schemas/needs.d.ts +78 -1
- package/dist/schemas/needs.d.ts.map +1 -1
- package/dist/schemas/needs.js +36 -1
- package/dist/schemas/needs.js.map +1 -1
- package/dist/schemas/restart-intent.d.ts +47 -0
- package/dist/schemas/restart-intent.d.ts.map +1 -0
- package/dist/schemas/restart-intent.js +19 -0
- package/dist/schemas/restart-intent.js.map +1 -0
- package/dist/schemas/settings.d.ts +34 -0
- package/dist/schemas/settings.d.ts.map +1 -1
- package/dist/schemas/settings.js +2 -0
- package/dist/schemas/settings.js.map +1 -1
- package/dist/schemas/short-codes.d.ts +16 -0
- package/dist/schemas/short-codes.d.ts.map +1 -1
- package/dist/schemas/short-codes.js +2 -0
- package/dist/schemas/short-codes.js.map +1 -1
- package/dist/schemas/speech.d.ts +4 -0
- package/dist/schemas/speech.d.ts.map +1 -1
- package/dist/schemas/speech.js +1 -0
- package/dist/schemas/speech.js.map +1 -1
- package/dist/schemas/system.d.ts +46 -0
- package/dist/schemas/system.d.ts.map +1 -1
- package/dist/schemas/system.js +18 -1
- package/dist/schemas/system.js.map +1 -1
- package/dist/schemas/voice.d.ts +171 -0
- package/dist/schemas/voice.d.ts.map +1 -0
- package/dist/schemas/voice.js +99 -0
- package/dist/schemas/voice.js.map +1 -0
- package/dist/schemas/workspace/workspace-upload.d.ts +14 -0
- package/dist/schemas/workspace/workspace-upload.d.ts.map +1 -0
- package/dist/schemas/workspace/workspace-upload.js +6 -0
- package/dist/schemas/workspace/workspace-upload.js.map +1 -0
- package/dist/state/arrival.d.ts +3 -0
- package/dist/state/arrival.d.ts.map +1 -1
- package/dist/state/arrival.js +1 -0
- package/dist/state/arrival.js.map +1 -1
- package/dist/state/definition.d.ts +52 -4
- package/dist/state/definition.d.ts.map +1 -1
- package/dist/state/history-state.d.ts.map +1 -1
- package/dist/state/history-state.js +2 -0
- package/dist/state/history-state.js.map +1 -1
- package/dist/state/runtime-state.d.ts +2 -2
- package/dist/state/runtime-state.d.ts.map +1 -1
- package/dist/state/runtime-state.js +2 -2
- package/dist/state/runtime-state.js.map +1 -1
- package/dist/state/update-probation.d.ts +50 -0
- package/dist/state/update-probation.d.ts.map +1 -0
- package/dist/state/update-probation.js +81 -0
- package/dist/state/update-probation.js.map +1 -0
- package/dist/state/workspace-state.d.ts +1 -1
- package/dist/state/workspace-state.d.ts.map +1 -1
- package/dist/state/workspace-state.js +1 -1
- package/dist/state/workspace-state.js.map +1 -1
- package/package.json +16 -5
- package/src/contracts/needs.contract.ts +2 -2
- package/src/contracts/runner.contract.ts +10 -2
- package/src/ids/project-dir.test.ts +19 -1
- package/src/ids/project-dir.ts +14 -0
- package/src/ids/tunnel-ids.test.ts +30 -0
- package/src/index.ts +7 -0
- package/src/models/model-roles.ts +10 -0
- package/src/policy/control-scopes.ts +27 -0
- package/src/policy/device-programs.ts +137 -0
- package/src/policy/identity-assertion.ts +130 -0
- package/src/policy/sandbox-power.ts +247 -0
- package/src/policy/tests/device-programs.test.ts +107 -0
- package/src/policy/tests/identity-assertion.test.ts +79 -0
- package/src/policy/tests/sandbox-power.test.ts +181 -0
- package/src/protocol/doors/runner-protocol.ts +7 -0
- package/src/protocol/raw/raw-json-routes.test.ts +87 -0
- package/src/protocol/raw/raw-json-routes.ts +125 -6
- package/src/protocol/raw/raw-routes.ts +6 -0
- package/src/schemas/automations.ts +10 -3
- package/src/schemas/device-swaps.test.ts +39 -0
- package/src/schemas/device-swaps.ts +26 -0
- package/src/schemas/environment.ts +4 -0
- package/src/schemas/members.ts +8 -0
- package/src/schemas/needs.ts +51 -1
- package/src/schemas/restart-intent.test.ts +45 -0
- package/src/schemas/restart-intent.ts +47 -0
- package/src/schemas/settings.ts +6 -0
- package/src/schemas/short-codes.ts +11 -0
- package/src/schemas/speech.ts +4 -0
- package/src/schemas/system.ts +43 -4
- package/src/schemas/voice.ts +161 -0
- package/src/schemas/workspace/workspace-upload.ts +11 -0
- package/src/state/arrival.ts +3 -0
- package/src/state/history-state.ts +5 -0
- package/src/state/runtime-state.test.ts +9 -0
- package/src/state/runtime-state.ts +7 -5
- package/src/state/update-probation.test.ts +45 -0
- package/src/state/update-probation.ts +169 -0
- package/src/state/workspace-state.ts +4 -1
|
@@ -42,6 +42,14 @@ export const MODEL_ROLES = [
|
|
|
42
42
|
icon: "align-left",
|
|
43
43
|
setup: "low",
|
|
44
44
|
},
|
|
45
|
+
{
|
|
46
|
+
id: "spoken-reply",
|
|
47
|
+
label: "Spoken replies",
|
|
48
|
+
blurb: "The few sentences you hear when you talk to the agent hands-free: what it did and what it needs from you, while the full reply stays on screen.",
|
|
49
|
+
kind: "helper",
|
|
50
|
+
icon: "volume-up",
|
|
51
|
+
setup: "low",
|
|
52
|
+
},
|
|
45
53
|
{
|
|
46
54
|
id: "model-router",
|
|
47
55
|
label: "New chat routing",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-roles.js","sourceRoot":"","sources":["../../src/models/model-roles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-roles.js","sourceRoot":"","sources":["../../src/models/model-roles.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,51 @@ export interface ControlScopeReach {
|
|
|
13
13
|
readonly note: string;
|
|
14
14
|
}
|
|
15
15
|
export declare const CONTROL_SCOPE_REACH: readonly ControlScopeReach[];
|
|
16
|
+
export declare const ControlTokenSummarySchema: z.ZodObject<{
|
|
17
|
+
id: z.ZodString;
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
scope: z.ZodEnum<{
|
|
20
|
+
drive: "drive";
|
|
21
|
+
editor: "editor";
|
|
22
|
+
land: "land";
|
|
23
|
+
read: "read";
|
|
24
|
+
}>;
|
|
25
|
+
createdAt: z.ZodNumber;
|
|
26
|
+
createdBy: z.ZodOptional<z.ZodString>;
|
|
27
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
lastUsedAt: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export type ControlTokenSummary = z.infer<typeof ControlTokenSummarySchema>;
|
|
31
|
+
export declare const ControlTokensListSchema: z.ZodObject<{
|
|
32
|
+
tokens: z.ZodArray<z.ZodObject<{
|
|
33
|
+
id: z.ZodString;
|
|
34
|
+
label: z.ZodString;
|
|
35
|
+
scope: z.ZodEnum<{
|
|
36
|
+
drive: "drive";
|
|
37
|
+
editor: "editor";
|
|
38
|
+
land: "land";
|
|
39
|
+
read: "read";
|
|
40
|
+
}>;
|
|
41
|
+
createdAt: z.ZodNumber;
|
|
42
|
+
createdBy: z.ZodOptional<z.ZodString>;
|
|
43
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
lastUsedAt: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
}, z.core.$strip>>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export declare const ControlTokenMintSchema: z.ZodObject<{
|
|
48
|
+
scope: z.ZodEnum<{
|
|
49
|
+
drive: "drive";
|
|
50
|
+
editor: "editor";
|
|
51
|
+
land: "land";
|
|
52
|
+
read: "read";
|
|
53
|
+
}>;
|
|
54
|
+
label: z.ZodOptional<z.ZodString>;
|
|
55
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export type ControlTokenMint = z.infer<typeof ControlTokenMintSchema>;
|
|
58
|
+
export declare const ControlTokenMintedSchema: z.ZodObject<{
|
|
59
|
+
id: z.ZodString;
|
|
60
|
+
token: z.ZodString;
|
|
61
|
+
}, z.core.$strip>;
|
|
62
|
+
export type ControlTokenMinted = z.infer<typeof ControlTokenMintedSchema>;
|
|
16
63
|
//# sourceMappingURL=control-scopes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-scopes.d.ts","sourceRoot":"","sources":["../../src/policy/control-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,YAAI,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,eAAO,MAAM,kBAAkB;;;;;EAAyB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAqB3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"control-scopes.d.ts","sourceRoot":"","sources":["../../src/policy/control-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,YAAI,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,eAAO,MAAM,kBAAkB;;;;;EAAyB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAqB3D,CAAC;AAGF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;iBAWpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;iBAA2D,CAAC;AAGhG,eAAO,MAAM,sBAAsB;;;;;;;;;iBAIjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;iBAAkD,CAAC;AACxF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -23,4 +23,20 @@ export const CONTROL_SCOPE_REACH = [
|
|
|
23
23
|
note: "Separate because the usual arrangement is a program that works and a person who decides.",
|
|
24
24
|
},
|
|
25
25
|
];
|
|
26
|
+
export const ControlTokenSummarySchema = z.object({
|
|
27
|
+
id: z.string(),
|
|
28
|
+
label: z.string(),
|
|
29
|
+
scope: ControlScopeSchema,
|
|
30
|
+
createdAt: z.number(),
|
|
31
|
+
createdBy: z.string().optional(),
|
|
32
|
+
expiresAt: z.number().optional(),
|
|
33
|
+
lastUsedAt: z.number().optional(),
|
|
34
|
+
});
|
|
35
|
+
export const ControlTokensListSchema = z.object({ tokens: z.array(ControlTokenSummarySchema) });
|
|
36
|
+
export const ControlTokenMintSchema = z.object({
|
|
37
|
+
scope: ControlScopeSchema,
|
|
38
|
+
label: z.string().optional(),
|
|
39
|
+
expiresAt: z.number().optional(),
|
|
40
|
+
});
|
|
41
|
+
export const ControlTokenMintedSchema = z.object({ id: z.string(), token: z.string() });
|
|
26
42
|
//# sourceMappingURL=control-scopes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-scopes.js","sourceRoot":"","sources":["../../src/policy/control-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAE3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAWzD,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC7D;QACI,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,8FAA8F;QACrG,IAAI,EAAE,+EAA+E;KACxF;IACD;QACI,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,gHAAgH;QACvH,IAAI,EAAE,+FAA+F;KACxG;IACD;QACI,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,sHAAsH;QAC7H,IAAI,EAAE,+GAA+G;KACxH;IACD;QACI,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,kHAAkH;QACzH,IAAI,EAAE,0FAA0F;KACnG;CACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"control-scopes.js","sourceRoot":"","sources":["../../src/policy/control-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAE3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAWzD,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC7D;QACI,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,8FAA8F;QACrG,IAAI,EAAE,+EAA+E;KACxF;IACD;QACI,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,gHAAgH;QACvH,IAAI,EAAE,+FAA+F;KACxG;IACD;QACI,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,sHAAsH;QAC7H,IAAI,EAAE,+GAA+G;KACxH;IACD;QACI,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,kHAAkH;QACzH,IAAI,EAAE,0FAA0F;KACnG;CACJ,CAAC;AAGF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IAErB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAGhG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export type ProgramKind = "command" | "phone-command" | "app-launch" | "typed";
|
|
3
|
+
export interface ProgramReading {
|
|
4
|
+
readonly tool: string;
|
|
5
|
+
readonly kind: ProgramKind;
|
|
6
|
+
readonly commandLine: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ProgramArgumentsSchema: z.ZodObject<{
|
|
9
|
+
command: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
10
|
+
serial: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
11
|
+
program: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
12
|
+
args: z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
13
|
+
target: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
14
|
+
action: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
15
|
+
text: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
value: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
17
|
+
}, z.core.$loose>;
|
|
18
|
+
export type ProgramArguments = z.infer<typeof ProgramArgumentsSchema>;
|
|
19
|
+
interface ProgramCarrier {
|
|
20
|
+
readonly tool: string;
|
|
21
|
+
readonly carries: string;
|
|
22
|
+
readonly read: (args: ProgramArguments) => Omit<ProgramReading, "tool"> | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare const commandLineOf: (program: string, args: readonly string[]) => string;
|
|
25
|
+
export declare const DEVICE_PROGRAM_TOOLS: readonly ProgramCarrier[];
|
|
26
|
+
export declare const programInCall: (tool: string, args: ProgramArguments) => ProgramReading | undefined;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=device-programs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-programs.d.ts","sourceRoot":"","sources":["../../src/policy/device-programs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,OAAO,CAAC;AAG/E,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAID,eAAO,MAAM,sBAAsB;;;;;;;;;iBASjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,UAAU,cAAc;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACvF;AAWD,eAAO,MAAM,aAAa,YAAa,MAAM,QAAQ,SAAS,MAAM,EAAE,KAAG,MAI1D,CAAC;AAmBhB,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAkDzD,CAAC;AAGF,eAAO,MAAM,aAAa,SAAU,MAAM,QAAQ,gBAAgB,KAAG,cAAc,GAAG,SAGrF,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const ProgramArgumentsSchema = z.looseObject({
|
|
3
|
+
command: z.string().optional().catch(undefined),
|
|
4
|
+
serial: z.string().optional().catch(undefined),
|
|
5
|
+
program: z.string().optional().catch(undefined),
|
|
6
|
+
args: z.array(z.string()).optional().catch(undefined),
|
|
7
|
+
target: z.string().optional().catch(undefined),
|
|
8
|
+
action: z.string().optional().catch(undefined),
|
|
9
|
+
text: z.string().optional().catch(undefined),
|
|
10
|
+
value: z.string().optional().catch(undefined),
|
|
11
|
+
});
|
|
12
|
+
const present = (value) => (value === undefined || value.trim() === "" ? undefined : value);
|
|
13
|
+
const programName = (program) => (program.split(/[/\\]/).at(-1) ?? program).replace(/\.exe$/i, "");
|
|
14
|
+
export const commandLineOf = (program, args) => [
|
|
15
|
+
programName(program),
|
|
16
|
+
...args.map((arg) => (arg === "" || /[\s'"|;&<>()$`\\]/.test(arg) ? (arg.includes("'") ? `"${arg}"` : `'${arg}'`) : arg)),
|
|
17
|
+
].join(" ");
|
|
18
|
+
const ADB_SERIAL = /^[\w.:-]+$/;
|
|
19
|
+
const URL_TARGET = /^(?:[a-z][a-z0-9+.-]*:\/\/|www\.|mailto:)/i;
|
|
20
|
+
const typedBy = (tool, action, field) => ({
|
|
21
|
+
tool,
|
|
22
|
+
carries: `${field}, when action is ${action}`,
|
|
23
|
+
read: (args) => {
|
|
24
|
+
const typed = args.action === action ? present(args[field]) : undefined;
|
|
25
|
+
return typed === undefined ? undefined : { kind: "typed", commandLine: typed };
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
export const DEVICE_PROGRAM_TOOLS = [
|
|
29
|
+
{
|
|
30
|
+
tool: "run_command",
|
|
31
|
+
carries: "command",
|
|
32
|
+
read: ({ command }) => {
|
|
33
|
+
const line = present(command);
|
|
34
|
+
return line === undefined ? undefined : { kind: "command", commandLine: line };
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
tool: "android_shell",
|
|
39
|
+
carries: "command, run as `adb [-s serial] shell <command>`",
|
|
40
|
+
read: ({ command, serial }) => {
|
|
41
|
+
const line = present(command);
|
|
42
|
+
if (line === undefined) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return { kind: "phone-command", commandLine: `adb ${serial !== undefined && ADB_SERIAL.test(serial) ? `-s ${serial} ` : ""}shell ${line}` };
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
tool: "app_start",
|
|
50
|
+
carries: "program and args",
|
|
51
|
+
read: ({ program, args }) => {
|
|
52
|
+
const started = present(program);
|
|
53
|
+
if (started === undefined) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return { kind: args === undefined || args.length === 0 ? "app-launch" : "command", commandLine: commandLineOf(started, args ?? []) };
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
tool: "open",
|
|
61
|
+
carries: "target",
|
|
62
|
+
read: ({ target }) => {
|
|
63
|
+
const opened = present(target);
|
|
64
|
+
if (opened === undefined) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return { kind: URL_TARGET.test(opened) || !/\s/.test(opened.trim()) ? "app-launch" : "command", commandLine: opened };
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
typedBy("device", "type", "text"),
|
|
71
|
+
typedBy("android_act", "type", "text"),
|
|
72
|
+
typedBy("clipboard", "write", "text"),
|
|
73
|
+
typedBy("ui_act", "set_value", "value"),
|
|
74
|
+
];
|
|
75
|
+
export const programInCall = (tool, args) => {
|
|
76
|
+
const read = DEVICE_PROGRAM_TOOLS.find((carrier) => carrier.tool === tool)?.read(args);
|
|
77
|
+
return read === undefined ? undefined : { tool, ...read };
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=device-programs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-programs.js","sourceRoot":"","sources":["../../src/policy/device-programs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const IDENTITY_ASSERTION_TTL_MS: number;
|
|
3
|
+
export declare const IDENTITY_ASSERTION_MAX_TTL_MS: number;
|
|
4
|
+
export declare const ENV_PLATFORM_IDENTITY_KEY = "PLATFORM_IDENTITY_KEY";
|
|
5
|
+
export declare const IdentityAssertionMethodSchema: z.ZodEnum<{
|
|
6
|
+
email: "email";
|
|
7
|
+
google: "google";
|
|
8
|
+
}>;
|
|
9
|
+
export type IdentityAssertionMethod = z.infer<typeof IdentityAssertionMethodSchema>;
|
|
10
|
+
export interface IdentityAssertion {
|
|
11
|
+
readonly sandboxId: string;
|
|
12
|
+
readonly email: string;
|
|
13
|
+
readonly method: IdentityAssertionMethod;
|
|
14
|
+
readonly issuedAt: number;
|
|
15
|
+
readonly expiresAt: number;
|
|
16
|
+
readonly nonce: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const isIdentityAssertion: (bearer: string) => boolean;
|
|
19
|
+
export declare const mintIdentityAssertion: (privateKeyPem: string, claim: {
|
|
20
|
+
readonly sandboxId: string;
|
|
21
|
+
readonly email: string;
|
|
22
|
+
readonly method: IdentityAssertionMethod;
|
|
23
|
+
readonly issuedAtMs: number;
|
|
24
|
+
readonly ttlMs?: number;
|
|
25
|
+
}) => string;
|
|
26
|
+
export declare const verifyIdentityAssertion: (publicKeyPem: string, token: string, nowMs: number) => IdentityAssertion | undefined;
|
|
27
|
+
//# sourceMappingURL=identity-assertion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-assertion.d.ts","sourceRoot":"","sources":["../../src/policy/identity-assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,yBAAyB,QAAa,CAAC;AAGpD,eAAO,MAAM,6BAA6B,QAAa,CAAC;AAIxD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAGjE,eAAO,MAAM,6BAA6B;;;EAA8B,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAGpF,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAQD,eAAO,MAAM,mBAAmB,WAAY,MAAM,KAAG,OAAoD,CAAC;AAE1G,eAAO,MAAM,qBAAqB,kBACf,MAAM,SACd;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAC3B,KACF,MA2BF,CAAC;AAyBF,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,SAAS,MAAM,SAAS,MAAM,KAAG,iBAAiB,GAAG,SAuBhH,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createPrivateKey, createPublicKey, randomBytes, sign as edSign, verify as edVerify } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { SANDBOX_ID } from "../ids/tunnel-ids.js";
|
|
4
|
+
const ASSERTION_PREFIX = "pa1";
|
|
5
|
+
export const IDENTITY_ASSERTION_TTL_MS = 2 * 60_000;
|
|
6
|
+
export const IDENTITY_ASSERTION_MAX_TTL_MS = 5 * 60_000;
|
|
7
|
+
export const ENV_PLATFORM_IDENTITY_KEY = "PLATFORM_IDENTITY_KEY";
|
|
8
|
+
export const IdentityAssertionMethodSchema = z.enum(["email", "google"]);
|
|
9
|
+
const base64url = (bytes) => bytes.toString("base64url");
|
|
10
|
+
const signedBytes = (payload) => Buffer.concat([Buffer.from(`${ASSERTION_PREFIX}.`, "utf8"), payload]);
|
|
11
|
+
export const isIdentityAssertion = (bearer) => bearer.startsWith(`${ASSERTION_PREFIX}.`);
|
|
12
|
+
export const mintIdentityAssertion = (privateKeyPem, claim) => {
|
|
13
|
+
if (!SANDBOX_ID.test(claim.sandboxId)) {
|
|
14
|
+
throw new Error(`an identity assertion names a 12-hex sandbox id, got "${claim.sandboxId}"`);
|
|
15
|
+
}
|
|
16
|
+
if (claim.email.trim() === "") {
|
|
17
|
+
throw new Error("an identity assertion names an address");
|
|
18
|
+
}
|
|
19
|
+
const ttlMs = claim.ttlMs ?? IDENTITY_ASSERTION_TTL_MS;
|
|
20
|
+
if (ttlMs <= 0 || ttlMs > IDENTITY_ASSERTION_MAX_TTL_MS) {
|
|
21
|
+
throw new Error(`an identity assertion lives at most ${IDENTITY_ASSERTION_MAX_TTL_MS} ms`);
|
|
22
|
+
}
|
|
23
|
+
const iat = Math.floor(claim.issuedAtMs / 1000);
|
|
24
|
+
const exp = Math.floor((claim.issuedAtMs + ttlMs) / 1000);
|
|
25
|
+
const payload = Buffer.from(JSON.stringify({
|
|
26
|
+
v: 1,
|
|
27
|
+
sub: claim.sandboxId,
|
|
28
|
+
email: claim.email.trim().toLowerCase(),
|
|
29
|
+
amr: claim.method,
|
|
30
|
+
iat,
|
|
31
|
+
exp,
|
|
32
|
+
jti: base64url(randomBytes(16)),
|
|
33
|
+
}), "utf8");
|
|
34
|
+
const signature = edSign(null, signedBytes(payload), createPrivateKey(privateKeyPem));
|
|
35
|
+
return `${ASSERTION_PREFIX}.${base64url(payload)}.${base64url(signature)}`;
|
|
36
|
+
};
|
|
37
|
+
const AssertionPayloadSchema = z.object({
|
|
38
|
+
v: z.literal(1),
|
|
39
|
+
sub: z.string().regex(SANDBOX_ID),
|
|
40
|
+
email: z.string().min(1),
|
|
41
|
+
amr: IdentityAssertionMethodSchema,
|
|
42
|
+
iat: z.number(),
|
|
43
|
+
exp: z.number(),
|
|
44
|
+
jti: z.string().min(16),
|
|
45
|
+
});
|
|
46
|
+
const parsePayload = (payload) => {
|
|
47
|
+
try {
|
|
48
|
+
return AssertionPayloadSchema.safeParse(JSON.parse(payload.toString("utf8"))).data;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export const verifyIdentityAssertion = (publicKeyPem, token, nowMs) => {
|
|
55
|
+
const [prefix, encodedPayload, encodedSignature, ...rest] = token.split(".");
|
|
56
|
+
if (prefix !== ASSERTION_PREFIX || encodedPayload === undefined || encodedSignature === undefined || rest.length > 0) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const payload = Buffer.from(encodedPayload, "base64url");
|
|
60
|
+
try {
|
|
61
|
+
if (!edVerify(null, signedBytes(payload), createPublicKey(publicKeyPem), Buffer.from(encodedSignature, "base64url"))) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const claim = parsePayload(payload);
|
|
69
|
+
if (claim === undefined) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
if (claim.exp * 1000 <= nowMs || claim.iat * 1000 > nowMs + 60_000 || (claim.exp - claim.iat) * 1000 > IDENTITY_ASSERTION_MAX_TTL_MS) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return { sandboxId: claim.sub, email: claim.email, method: claim.amr, issuedAt: claim.iat, expiresAt: claim.exp, nonce: claim.jti };
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=identity-assertion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-assertion.js","sourceRoot":"","sources":["../../src/policy/identity-assertion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CommandSpan } from "./command-classes.js";
|
|
2
|
+
export type SandboxPowerOp = "start" | "stop" | "restart" | "sleep" | "remove" | "update" | "prepare" | "rebuild" | "rollback" | "dev" | "resize" | "restore" | "connect";
|
|
3
|
+
export declare const SANDBOX_POWER_DOING: {
|
|
4
|
+
readonly start: "Start";
|
|
5
|
+
readonly stop: "Stop";
|
|
6
|
+
readonly restart: "Restart";
|
|
7
|
+
readonly sleep: "Stop";
|
|
8
|
+
readonly remove: "Remove";
|
|
9
|
+
readonly update: "Update";
|
|
10
|
+
readonly prepare: "Prepare an update for";
|
|
11
|
+
readonly rebuild: "Rebuild";
|
|
12
|
+
readonly rollback: "Roll back";
|
|
13
|
+
readonly dev: "Update";
|
|
14
|
+
readonly resize: "Restart with new resources";
|
|
15
|
+
readonly restore: "Restore a backup over";
|
|
16
|
+
readonly connect: "Reinstall";
|
|
17
|
+
};
|
|
18
|
+
export interface SandboxPowerCommand {
|
|
19
|
+
readonly via: "ic" | "docker";
|
|
20
|
+
readonly op: SandboxPowerOp;
|
|
21
|
+
readonly stops: boolean;
|
|
22
|
+
readonly targets: readonly string[];
|
|
23
|
+
readonly unnamed: boolean;
|
|
24
|
+
readonly span: CommandSpan;
|
|
25
|
+
readonly live: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare const sandboxPowerCommands: (command: string) => SandboxPowerCommand[];
|
|
28
|
+
export interface OwnSandbox {
|
|
29
|
+
readonly slug: string;
|
|
30
|
+
readonly container: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const mayReachSandbox: (hit: SandboxPowerCommand, own: OwnSandbox) => boolean;
|
|
33
|
+
export declare const managesSandbox: (hit: SandboxPowerCommand, containerPrefix: string) => boolean;
|
|
34
|
+
//# sourceMappingURL=sandbox-power.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-power.d.ts","sourceRoot":"","sources":["../../src/policy/sandbox-power.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWxD,MAAM,MAAM,cAAc,GACpB,OAAO,GACP,MAAM,GACN,SAAS,GACT,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,KAAK,GACL,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAGhB,eAAO,MAAM,mBAAmB;oBACrB,OAAO;mBACR,MAAM;sBACH,SAAS;oBACX,MAAM;qBACL,QAAQ;qBACR,QAAQ;sBACP,uBAAuB;sBACvB,SAAS;uBACR,WAAW;kBAChB,QAAQ;qBACL,4BAA4B;sBAC3B,uBAAuB;sBACvB,WAAW;CAC2B,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAE5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AA+ID,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,mBAAmB,EAoBzE,CAAC;AAMF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAOD,eAAO,MAAM,eAAe,QAAS,mBAAmB,OAAO,UAAU,KAAG,OAC2C,CAAC;AAOxH,eAAO,MAAM,cAAc,QAAS,mBAAmB,mBAAmB,MAAM,KAAG,OACK,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { inertRegions, isLive } from "../text/shell-regions.js";
|
|
2
|
+
export const SANDBOX_POWER_DOING = {
|
|
3
|
+
start: "Start",
|
|
4
|
+
stop: "Stop",
|
|
5
|
+
restart: "Restart",
|
|
6
|
+
sleep: "Stop",
|
|
7
|
+
remove: "Remove",
|
|
8
|
+
update: "Update",
|
|
9
|
+
prepare: "Prepare an update for",
|
|
10
|
+
rebuild: "Rebuild",
|
|
11
|
+
rollback: "Roll back",
|
|
12
|
+
dev: "Update",
|
|
13
|
+
resize: "Restart with new resources",
|
|
14
|
+
restore: "Restore a backup over",
|
|
15
|
+
connect: "Reinstall",
|
|
16
|
+
};
|
|
17
|
+
const IC_INVOCATION = /(?<![\w.$-])ic(?:\.exe)?["']?\s+sandbox\s+([a-z][a-z-]*)(?![\w-])/gi;
|
|
18
|
+
const DOCKER_INVOCATION = /(?<![\w.$-])(?:docker|podman)(?:\.exe)?["']?\s+(?:container\s+)?(stop|restart|rm|remove|kill)(?![\w-])/gi;
|
|
19
|
+
const IC_VERBS = new Map([
|
|
20
|
+
["start", "start"],
|
|
21
|
+
["stop", "stop"],
|
|
22
|
+
["restart", "restart"],
|
|
23
|
+
["sleep", "sleep"],
|
|
24
|
+
["remove", "remove"],
|
|
25
|
+
["rm", "remove"],
|
|
26
|
+
["update", "update"],
|
|
27
|
+
["prepare", "prepare"],
|
|
28
|
+
["rebuild", "rebuild"],
|
|
29
|
+
["rollback", "rollback"],
|
|
30
|
+
["dev", "dev"],
|
|
31
|
+
["reshape", "resize"],
|
|
32
|
+
["shape", "resize"],
|
|
33
|
+
["backup-restore", "restore"],
|
|
34
|
+
["connect", "connect"],
|
|
35
|
+
]);
|
|
36
|
+
const DOCKER_VERBS = new Map([
|
|
37
|
+
["stop", "stop"],
|
|
38
|
+
["kill", "stop"],
|
|
39
|
+
["restart", "restart"],
|
|
40
|
+
["rm", "remove"],
|
|
41
|
+
["remove", "remove"],
|
|
42
|
+
]);
|
|
43
|
+
const IC_VALUE_FLAGS = new Set([
|
|
44
|
+
"--channel",
|
|
45
|
+
"--to",
|
|
46
|
+
"--set",
|
|
47
|
+
"--when",
|
|
48
|
+
"--memory",
|
|
49
|
+
"--cpus",
|
|
50
|
+
"--privileged",
|
|
51
|
+
"--gpus",
|
|
52
|
+
"--idle",
|
|
53
|
+
"--source",
|
|
54
|
+
"--code",
|
|
55
|
+
"--snapshot",
|
|
56
|
+
"--into",
|
|
57
|
+
"--confirm",
|
|
58
|
+
"--accept",
|
|
59
|
+
"--tail",
|
|
60
|
+
]);
|
|
61
|
+
const DOCKER_VALUE_FLAGS = new Set(["-t", "--time", "-s", "--signal"]);
|
|
62
|
+
const SIMPLE_COMMAND = /^(?:[^|;&\n\r"']|(?<=[<>])&|"[^"]*"?|'[^']*'?)*/;
|
|
63
|
+
const WORD = /(?:[^\s"']|"[^"]*"?|'[^']*'?)+/g;
|
|
64
|
+
const REDIRECTION = /^\d*(?:>>?|<)/;
|
|
65
|
+
const BARE_REDIRECTION = /^\d*(?:>>?|<)$/;
|
|
66
|
+
const wordsOf = (text) => [...(SIMPLE_COMMAND.exec(text)?.[0] ?? "").matchAll(WORD)].map((word) => word[0].replace(/["']/g, ""));
|
|
67
|
+
const withoutRedirections = (words) => {
|
|
68
|
+
const kept = [];
|
|
69
|
+
let skipNext = false;
|
|
70
|
+
for (const word of words) {
|
|
71
|
+
if (skipNext) {
|
|
72
|
+
skipNext = false;
|
|
73
|
+
}
|
|
74
|
+
else if (BARE_REDIRECTION.test(word)) {
|
|
75
|
+
skipNext = true;
|
|
76
|
+
}
|
|
77
|
+
else if (!REDIRECTION.test(word)) {
|
|
78
|
+
kept.push(word);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return kept;
|
|
82
|
+
};
|
|
83
|
+
const operandsOf = (words, valueFlags) => {
|
|
84
|
+
const positionals = [];
|
|
85
|
+
const flags = new Map();
|
|
86
|
+
const list = withoutRedirections(words);
|
|
87
|
+
for (const [index, word] of list.entries()) {
|
|
88
|
+
const equals = word.indexOf("=");
|
|
89
|
+
if (!word.startsWith("-") || word === "-") {
|
|
90
|
+
if (!valueFlags.has(list[index - 1] ?? "")) {
|
|
91
|
+
positionals.push(word);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (word.startsWith("--") && equals !== -1) {
|
|
95
|
+
flags.set(word.slice(0, equals), word.slice(equals + 1));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
flags.set(word, valueFlags.has(word) ? list[index + 1] : undefined);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { positionals, flags };
|
|
102
|
+
};
|
|
103
|
+
const icAim = (op, { positionals, flags }) => {
|
|
104
|
+
const all = flags.has("--all") || flags.has("-a");
|
|
105
|
+
if (op === "start" || op === "prepare") {
|
|
106
|
+
return { stops: false, targets: positionals, all };
|
|
107
|
+
}
|
|
108
|
+
if (op === "resize") {
|
|
109
|
+
const when = flags.get("--when");
|
|
110
|
+
const saves = flags.has("--later") || flags.has("--forget") || (when !== undefined && when !== "now");
|
|
111
|
+
return { stops: !saves, targets: positionals, all };
|
|
112
|
+
}
|
|
113
|
+
if (op === "restore") {
|
|
114
|
+
const into = flags.get("--into");
|
|
115
|
+
return into === undefined ? { stops: false, targets: [], all: false } : { stops: true, targets: [into], all: false };
|
|
116
|
+
}
|
|
117
|
+
if (op === "connect") {
|
|
118
|
+
return { stops: flags.has("--replace"), targets: [], all: false };
|
|
119
|
+
}
|
|
120
|
+
return { stops: true, targets: positionals, all };
|
|
121
|
+
};
|
|
122
|
+
export const sandboxPowerCommands = (command) => {
|
|
123
|
+
const regions = inertRegions(command);
|
|
124
|
+
const found = [];
|
|
125
|
+
for (const invocation of command.matchAll(IC_INVOCATION)) {
|
|
126
|
+
const op = IC_VERBS.get((invocation[1] ?? "").toLowerCase());
|
|
127
|
+
if (op !== undefined) {
|
|
128
|
+
const span = { start: invocation.index, end: invocation.index + invocation[0].length };
|
|
129
|
+
const aim = icAim(op, operandsOf(wordsOf(command.slice(span.end)), IC_VALUE_FLAGS));
|
|
130
|
+
found.push({ via: "ic", op, stops: aim.stops, targets: aim.targets, unnamed: aim.targets.length === 0 || aim.all, span, live: isLive(span, regions) });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
for (const invocation of command.matchAll(DOCKER_INVOCATION)) {
|
|
134
|
+
const op = DOCKER_VERBS.get((invocation[1] ?? "").toLowerCase());
|
|
135
|
+
if (op !== undefined) {
|
|
136
|
+
const span = { start: invocation.index, end: invocation.index + invocation[0].length };
|
|
137
|
+
const { positionals } = operandsOf(wordsOf(command.slice(span.end)), DOCKER_VALUE_FLAGS);
|
|
138
|
+
found.push({ via: "docker", op, stops: true, targets: positionals, unnamed: positionals.length === 0, span, live: isLive(span, regions) });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return found.toSorted((left, right) => left.span.start - right.span.start);
|
|
142
|
+
};
|
|
143
|
+
const isExpansion = (word) => /[$`*?%]|^\(/.test(word);
|
|
144
|
+
export const mayReachSandbox = (hit, own) => hit.unnamed || hit.targets.some((target) => target === own.slug || target === own.container || isExpansion(target));
|
|
145
|
+
export const managesSandbox = (hit, containerPrefix) => hit.via === "ic" || hit.targets.some((target) => target.startsWith(containerPrefix));
|
|
146
|
+
//# sourceMappingURL=sandbox-power.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-power.js","sourceRoot":"","sources":["../../src/policy/sandbox-power.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,42 @@ export declare const RunnerSummarySchema: z.ZodObject<{
|
|
|
111
111
|
}, z.core.$strip>>>;
|
|
112
112
|
}, z.core.$strip>;
|
|
113
113
|
export type RunnerSummary = z.infer<typeof RunnerSummarySchema>;
|
|
114
|
+
export declare const RunnersListSchema: z.ZodObject<{
|
|
115
|
+
runners: z.ZodArray<z.ZodObject<{
|
|
116
|
+
id: z.ZodString;
|
|
117
|
+
host: z.ZodOptional<z.ZodString>;
|
|
118
|
+
online: z.ZodBoolean;
|
|
119
|
+
version: z.ZodOptional<z.ZodString>;
|
|
120
|
+
image: z.ZodOptional<z.ZodString>;
|
|
121
|
+
channel: z.ZodOptional<z.ZodString>;
|
|
122
|
+
overlayHash: z.ZodOptional<z.ZodString>;
|
|
123
|
+
facts: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
cpus: z.ZodNumber;
|
|
125
|
+
memoryMb: z.ZodNumber;
|
|
126
|
+
freeDiskMb: z.ZodNumber;
|
|
127
|
+
load: z.ZodNumber;
|
|
128
|
+
memoryFreeMb: z.ZodOptional<z.ZodNumber>;
|
|
129
|
+
memoryLimitMb: z.ZodOptional<z.ZodNumber>;
|
|
130
|
+
cpuPressure: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
memoryStall: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
}, z.core.$strip>>;
|
|
133
|
+
lastSeen: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
parity: z.ZodEnum<{
|
|
135
|
+
current: "current";
|
|
136
|
+
outdated: "outdated";
|
|
137
|
+
unknown: "unknown";
|
|
138
|
+
}>;
|
|
139
|
+
drift: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
140
|
+
subject: z.ZodString;
|
|
141
|
+
detail: z.ZodString;
|
|
142
|
+
}, z.core.$strip>>>;
|
|
143
|
+
}, z.core.$strip>>;
|
|
144
|
+
}, z.core.$strip>;
|
|
145
|
+
export type RunnersList = z.infer<typeof RunnersListSchema>;
|
|
146
|
+
export declare const RunnerDefinitionAppliedSchema: z.ZodObject<{
|
|
147
|
+
settings: z.ZodArray<z.ZodString>;
|
|
148
|
+
}, z.core.$strip>;
|
|
149
|
+
export type RunnerDefinitionApplied = z.infer<typeof RunnerDefinitionAppliedSchema>;
|
|
114
150
|
export declare const RunnerSyncSchema: z.ZodObject<{
|
|
115
151
|
op: z.ZodEnum<{
|
|
116
152
|
pull: "pull";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-protocol.d.ts","sourceRoot":"","sources":["../../../src/protocol/doors/runner-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAIzD,eAAO,MAAM,iBAAiB;;;;;;;;;iBAkB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAK5D,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,eAAO,MAAM,gBAAgB,cAAe,MAAM,KAAG,MAAyF,CAAC;AAG/I,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,MAAiE,CAAC;AAItH,eAAO,MAAM,YAAY,cAAe,MAAM,QAAQ,MAAM,KAAG,MACqB,CAAC;AAIrF,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,KAAG,MAAkD,CAAC;AAI9G,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MAA0B,CAAC;AAIrE,eAAO,MAAM,oBAAoB,cAAe,MAAM,KAAG,MAAsE,CAAC;AAChI,eAAO,MAAM,0BAA0B,cAAe,MAAM,KAAG,MAA8E,CAAC;AAI9I,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,mBAAmB,cAAe,MAAM,KAAG,MAAkE,CAAC;AAE3H,eAAO,MAAM,6BAA6B;;;;iBAKxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AASpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;mBAgBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,oCAAoC;;;iBAI/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAGlG,eAAO,MAAM,6BAA6B;;iBAAmD,CAAC;AAC9F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAIpF,eAAO,MAAM,iBAAiB;;;;;;;;;iBAc5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,eAAO,MAAM,kBAAkB;;;;EAA6C,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-protocol.d.ts","sourceRoot":"","sources":["../../../src/protocol/doors/runner-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,6 +73,8 @@ export const RunnerSummarySchema = z.object({
|
|
|
73
73
|
parity: RunnerParitySchema,
|
|
74
74
|
drift: z.array(NeedsActionSchema).optional(),
|
|
75
75
|
});
|
|
76
|
+
export const RunnersListSchema = z.object({ runners: z.array(RunnerSummarySchema) });
|
|
77
|
+
export const RunnerDefinitionAppliedSchema = z.object({ settings: z.array(z.string()) });
|
|
76
78
|
export const RunnerSyncSchema = z.object({
|
|
77
79
|
op: z.enum(["pull", "push"]),
|
|
78
80
|
conversationId: z.string().min(1),
|