@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.
Files changed (165) hide show
  1. package/README.md +8 -1
  2. package/dist/contracts/agent.contract.d.ts +1 -0
  3. package/dist/contracts/agent.contract.d.ts.map +1 -1
  4. package/dist/contracts/automations.contract.d.ts +1 -0
  5. package/dist/contracts/automations.contract.d.ts.map +1 -1
  6. package/dist/contracts/needs.contract.d.ts +29 -1
  7. package/dist/contracts/needs.contract.d.ts.map +1 -1
  8. package/dist/contracts/needs.contract.js +2 -2
  9. package/dist/contracts/needs.contract.js.map +1 -1
  10. package/dist/contracts/runner.contract.d.ts.map +1 -1
  11. package/dist/contracts/runner.contract.js +2 -2
  12. package/dist/contracts/runner.contract.js.map +1 -1
  13. package/dist/contracts/settings.contract.d.ts +34 -0
  14. package/dist/contracts/settings.contract.d.ts.map +1 -1
  15. package/dist/ids/project-dir.d.ts +1 -0
  16. package/dist/ids/project-dir.d.ts.map +1 -1
  17. package/dist/ids/project-dir.js +7 -0
  18. package/dist/ids/project-dir.js.map +1 -1
  19. package/dist/index.d.ts +114 -43
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +7 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/models/model-roles.d.ts +8 -0
  24. package/dist/models/model-roles.d.ts.map +1 -1
  25. package/dist/models/model-roles.js +8 -0
  26. package/dist/models/model-roles.js.map +1 -1
  27. package/dist/policy/control-scopes.d.ts +47 -0
  28. package/dist/policy/control-scopes.d.ts.map +1 -1
  29. package/dist/policy/control-scopes.js +16 -0
  30. package/dist/policy/control-scopes.js.map +1 -1
  31. package/dist/policy/device-programs.d.ts +28 -0
  32. package/dist/policy/device-programs.d.ts.map +1 -0
  33. package/dist/policy/device-programs.js +79 -0
  34. package/dist/policy/device-programs.js.map +1 -0
  35. package/dist/policy/identity-assertion.d.ts +27 -0
  36. package/dist/policy/identity-assertion.d.ts.map +1 -0
  37. package/dist/policy/identity-assertion.js +77 -0
  38. package/dist/policy/identity-assertion.js.map +1 -0
  39. package/dist/policy/sandbox-power.d.ts +34 -0
  40. package/dist/policy/sandbox-power.d.ts.map +1 -0
  41. package/dist/policy/sandbox-power.js +146 -0
  42. package/dist/policy/sandbox-power.js.map +1 -0
  43. package/dist/protocol/doors/runner-protocol.d.ts +36 -0
  44. package/dist/protocol/doors/runner-protocol.d.ts.map +1 -1
  45. package/dist/protocol/doors/runner-protocol.js +2 -0
  46. package/dist/protocol/doors/runner-protocol.js.map +1 -1
  47. package/dist/protocol/raw/raw-json-routes.d.ts +839 -1
  48. package/dist/protocol/raw/raw-json-routes.d.ts.map +1 -1
  49. package/dist/protocol/raw/raw-json-routes.js +60 -2
  50. package/dist/protocol/raw/raw-json-routes.js.map +1 -1
  51. package/dist/protocol/raw/raw-routes.d.ts +9 -0
  52. package/dist/protocol/raw/raw-routes.d.ts.map +1 -1
  53. package/dist/protocol/raw/raw-routes.js +3 -0
  54. package/dist/protocol/raw/raw-routes.js.map +1 -1
  55. package/dist/schemas/agent.d.ts +3 -0
  56. package/dist/schemas/agent.d.ts.map +1 -1
  57. package/dist/schemas/automations.d.ts +1 -0
  58. package/dist/schemas/automations.d.ts.map +1 -1
  59. package/dist/schemas/automations.js +8 -2
  60. package/dist/schemas/automations.js.map +1 -1
  61. package/dist/schemas/device-swaps.d.ts +19 -0
  62. package/dist/schemas/device-swaps.d.ts.map +1 -0
  63. package/dist/schemas/device-swaps.js +11 -0
  64. package/dist/schemas/device-swaps.js.map +1 -0
  65. package/dist/schemas/environment.d.ts +7 -0
  66. package/dist/schemas/environment.d.ts.map +1 -1
  67. package/dist/schemas/environment.js +2 -0
  68. package/dist/schemas/environment.js.map +1 -1
  69. package/dist/schemas/members.d.ts +4 -0
  70. package/dist/schemas/members.d.ts.map +1 -1
  71. package/dist/schemas/members.js +5 -0
  72. package/dist/schemas/members.js.map +1 -1
  73. package/dist/schemas/needs.d.ts +78 -1
  74. package/dist/schemas/needs.d.ts.map +1 -1
  75. package/dist/schemas/needs.js +36 -1
  76. package/dist/schemas/needs.js.map +1 -1
  77. package/dist/schemas/restart-intent.d.ts +47 -0
  78. package/dist/schemas/restart-intent.d.ts.map +1 -0
  79. package/dist/schemas/restart-intent.js +19 -0
  80. package/dist/schemas/restart-intent.js.map +1 -0
  81. package/dist/schemas/settings.d.ts +34 -0
  82. package/dist/schemas/settings.d.ts.map +1 -1
  83. package/dist/schemas/settings.js +2 -0
  84. package/dist/schemas/settings.js.map +1 -1
  85. package/dist/schemas/short-codes.d.ts +16 -0
  86. package/dist/schemas/short-codes.d.ts.map +1 -1
  87. package/dist/schemas/short-codes.js +2 -0
  88. package/dist/schemas/short-codes.js.map +1 -1
  89. package/dist/schemas/speech.d.ts +4 -0
  90. package/dist/schemas/speech.d.ts.map +1 -1
  91. package/dist/schemas/speech.js +1 -0
  92. package/dist/schemas/speech.js.map +1 -1
  93. package/dist/schemas/system.d.ts +46 -0
  94. package/dist/schemas/system.d.ts.map +1 -1
  95. package/dist/schemas/system.js +18 -1
  96. package/dist/schemas/system.js.map +1 -1
  97. package/dist/schemas/voice.d.ts +171 -0
  98. package/dist/schemas/voice.d.ts.map +1 -0
  99. package/dist/schemas/voice.js +99 -0
  100. package/dist/schemas/voice.js.map +1 -0
  101. package/dist/schemas/workspace/workspace-upload.d.ts +14 -0
  102. package/dist/schemas/workspace/workspace-upload.d.ts.map +1 -0
  103. package/dist/schemas/workspace/workspace-upload.js +6 -0
  104. package/dist/schemas/workspace/workspace-upload.js.map +1 -0
  105. package/dist/state/arrival.d.ts +3 -0
  106. package/dist/state/arrival.d.ts.map +1 -1
  107. package/dist/state/arrival.js +1 -0
  108. package/dist/state/arrival.js.map +1 -1
  109. package/dist/state/definition.d.ts +52 -4
  110. package/dist/state/definition.d.ts.map +1 -1
  111. package/dist/state/history-state.d.ts.map +1 -1
  112. package/dist/state/history-state.js +2 -0
  113. package/dist/state/history-state.js.map +1 -1
  114. package/dist/state/runtime-state.d.ts +2 -2
  115. package/dist/state/runtime-state.d.ts.map +1 -1
  116. package/dist/state/runtime-state.js +2 -2
  117. package/dist/state/runtime-state.js.map +1 -1
  118. package/dist/state/update-probation.d.ts +50 -0
  119. package/dist/state/update-probation.d.ts.map +1 -0
  120. package/dist/state/update-probation.js +81 -0
  121. package/dist/state/update-probation.js.map +1 -0
  122. package/dist/state/workspace-state.d.ts +1 -1
  123. package/dist/state/workspace-state.d.ts.map +1 -1
  124. package/dist/state/workspace-state.js +1 -1
  125. package/dist/state/workspace-state.js.map +1 -1
  126. package/package.json +16 -5
  127. package/src/contracts/needs.contract.ts +2 -2
  128. package/src/contracts/runner.contract.ts +10 -2
  129. package/src/ids/project-dir.test.ts +19 -1
  130. package/src/ids/project-dir.ts +14 -0
  131. package/src/ids/tunnel-ids.test.ts +30 -0
  132. package/src/index.ts +7 -0
  133. package/src/models/model-roles.ts +10 -0
  134. package/src/policy/control-scopes.ts +27 -0
  135. package/src/policy/device-programs.ts +137 -0
  136. package/src/policy/identity-assertion.ts +130 -0
  137. package/src/policy/sandbox-power.ts +247 -0
  138. package/src/policy/tests/device-programs.test.ts +107 -0
  139. package/src/policy/tests/identity-assertion.test.ts +79 -0
  140. package/src/policy/tests/sandbox-power.test.ts +181 -0
  141. package/src/protocol/doors/runner-protocol.ts +7 -0
  142. package/src/protocol/raw/raw-json-routes.test.ts +87 -0
  143. package/src/protocol/raw/raw-json-routes.ts +125 -6
  144. package/src/protocol/raw/raw-routes.ts +6 -0
  145. package/src/schemas/automations.ts +10 -3
  146. package/src/schemas/device-swaps.test.ts +39 -0
  147. package/src/schemas/device-swaps.ts +26 -0
  148. package/src/schemas/environment.ts +4 -0
  149. package/src/schemas/members.ts +8 -0
  150. package/src/schemas/needs.ts +51 -1
  151. package/src/schemas/restart-intent.test.ts +45 -0
  152. package/src/schemas/restart-intent.ts +47 -0
  153. package/src/schemas/settings.ts +6 -0
  154. package/src/schemas/short-codes.ts +11 -0
  155. package/src/schemas/speech.ts +4 -0
  156. package/src/schemas/system.ts +43 -4
  157. package/src/schemas/voice.ts +161 -0
  158. package/src/schemas/workspace/workspace-upload.ts +11 -0
  159. package/src/state/arrival.ts +3 -0
  160. package/src/state/history-state.ts +5 -0
  161. package/src/state/runtime-state.test.ts +9 -0
  162. package/src/state/runtime-state.ts +7 -5
  163. package/src/state/update-probation.test.ts +45 -0
  164. package/src/state/update-probation.ts +169 -0
  165. 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":"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"}
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;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsD,CAAC;AACrF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,6BAA6B;;iBAA8C,CAAC;AACzF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAKpF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAY3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;mBAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAKlE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAgB3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAK1D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,MAAyC,CAAC;AAIrF,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAsB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAKhE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;mBAcnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAI1E,eAAO,MAAM,oBAAoB;;;;;mBAAoH,CAAC;AACtJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -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),