@namzu/sdk 45.0.0 → 46.0.0

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 (281) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/dist/authorization/gate.d.ts +5 -2
  3. package/dist/authorization/gate.d.ts.map +1 -1
  4. package/dist/authorization/gate.js +35 -4
  5. package/dist/authorization/gate.js.map +1 -1
  6. package/dist/authorization/rules.d.ts.map +1 -1
  7. package/dist/authorization/rules.js +56 -6
  8. package/dist/authorization/rules.js.map +1 -1
  9. package/dist/authorization/shell-lexer.d.ts +38 -0
  10. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  11. package/dist/authorization/shell-lexer.js +88 -57
  12. package/dist/authorization/shell-lexer.js.map +1 -1
  13. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  14. package/dist/bridge/a2a/mapper.js +2 -0
  15. package/dist/bridge/a2a/mapper.js.map +1 -1
  16. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  17. package/dist/bridge/sse/mapper.js +1 -0
  18. package/dist/bridge/sse/mapper.js.map +1 -1
  19. package/dist/directory/types.d.ts +2 -0
  20. package/dist/directory/types.d.ts.map +1 -1
  21. package/dist/directory/types.js.map +1 -1
  22. package/dist/manager/resident/outbox.d.ts +4 -4
  23. package/dist/pricing/catalogue.generated.d.ts.map +1 -1
  24. package/dist/pricing/catalogue.generated.js +28 -4
  25. package/dist/pricing/catalogue.generated.js.map +1 -1
  26. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  27. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  28. package/dist/prompt/coding-agent-doctrine.js +1 -0
  29. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  30. package/dist/public-runtime.d.ts +6 -3
  31. package/dist/public-runtime.d.ts.map +1 -1
  32. package/dist/public-runtime.js +14 -2
  33. package/dist/public-runtime.js.map +1 -1
  34. package/dist/public-tools.d.ts +7 -2
  35. package/dist/public-tools.d.ts.map +1 -1
  36. package/dist/public-tools.js +15 -2
  37. package/dist/public-tools.js.map +1 -1
  38. package/dist/public-types.d.ts +8 -2
  39. package/dist/public-types.d.ts.map +1 -1
  40. package/dist/registry/tool/callable.d.ts +22 -0
  41. package/dist/registry/tool/callable.d.ts.map +1 -0
  42. package/dist/registry/tool/callable.js +29 -0
  43. package/dist/registry/tool/callable.js.map +1 -0
  44. package/dist/registry/tool/execute.d.ts.map +1 -1
  45. package/dist/registry/tool/execute.js +8 -1
  46. package/dist/registry/tool/execute.js.map +1 -1
  47. package/dist/runtime/query/declined.d.ts +12 -0
  48. package/dist/runtime/query/declined.d.ts.map +1 -0
  49. package/dist/runtime/query/declined.js +12 -0
  50. package/dist/runtime/query/declined.js.map +1 -0
  51. package/dist/runtime/query/executor/tool-call-admission.d.ts +37 -11
  52. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  53. package/dist/runtime/query/executor/tool-call-admission.js +38 -12
  54. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  55. package/dist/runtime/query/executor.d.ts +7 -3
  56. package/dist/runtime/query/executor.d.ts.map +1 -1
  57. package/dist/runtime/query/executor.js +32 -7
  58. package/dist/runtime/query/executor.js.map +1 -1
  59. package/dist/runtime/query/index.d.ts.map +1 -1
  60. package/dist/runtime/query/index.js +1 -0
  61. package/dist/runtime/query/index.js.map +1 -1
  62. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  63. package/dist/runtime/query/iteration/index.js +7 -0
  64. package/dist/runtime/query/iteration/index.js.map +1 -1
  65. package/dist/runtime/query/iteration/phases/context.d.ts +6 -0
  66. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  67. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  68. package/dist/runtime/query/iteration/phases/handoff.d.ts +22 -0
  69. package/dist/runtime/query/iteration/phases/handoff.d.ts.map +1 -0
  70. package/dist/runtime/query/iteration/phases/handoff.js +65 -0
  71. package/dist/runtime/query/iteration/phases/handoff.js.map +1 -0
  72. package/dist/runtime/query/iteration/phases/index.d.ts +1 -0
  73. package/dist/runtime/query/iteration/phases/index.d.ts.map +1 -1
  74. package/dist/runtime/query/iteration/phases/index.js +1 -0
  75. package/dist/runtime/query/iteration/phases/index.js.map +1 -1
  76. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  77. package/dist/runtime/query/iteration/phases/tool-review.js +8 -3
  78. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  79. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  80. package/dist/runtime/query/resume-pending.js +3 -2
  81. package/dist/runtime/query/resume-pending.js.map +1 -1
  82. package/dist/runtime/query/review-policy.d.ts +43 -0
  83. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  84. package/dist/runtime/query/review-policy.js +63 -19
  85. package/dist/runtime/query/review-policy.js.map +1 -1
  86. package/dist/schedules/cron.d.ts +21 -0
  87. package/dist/schedules/cron.d.ts.map +1 -0
  88. package/dist/schedules/cron.js +167 -0
  89. package/dist/schedules/cron.js.map +1 -0
  90. package/dist/schedules/describe.d.ts +14 -0
  91. package/dist/schedules/describe.d.ts.map +1 -0
  92. package/dist/schedules/describe.js +133 -0
  93. package/dist/schedules/describe.js.map +1 -0
  94. package/dist/schedules/errors.d.ts +11 -0
  95. package/dist/schedules/errors.d.ts.map +1 -0
  96. package/dist/schedules/errors.js +15 -0
  97. package/dist/schedules/errors.js.map +1 -0
  98. package/dist/schedules/evaluate.d.ts +35 -0
  99. package/dist/schedules/evaluate.d.ts.map +1 -0
  100. package/dist/schedules/evaluate.js +158 -0
  101. package/dist/schedules/evaluate.js.map +1 -0
  102. package/dist/schedules/index.d.ts +11 -0
  103. package/dist/schedules/index.d.ts.map +1 -0
  104. package/dist/schedules/index.js +8 -0
  105. package/dist/schedules/index.js.map +1 -0
  106. package/dist/schedules/next-fire.d.ts +50 -0
  107. package/dist/schedules/next-fire.d.ts.map +1 -0
  108. package/dist/schedules/next-fire.js +250 -0
  109. package/dist/schedules/next-fire.js.map +1 -0
  110. package/dist/schedules/spec.d.ts +30 -0
  111. package/dist/schedules/spec.d.ts.map +1 -0
  112. package/dist/schedules/spec.js +169 -0
  113. package/dist/schedules/spec.js.map +1 -0
  114. package/dist/schedules/types.d.ts +144 -0
  115. package/dist/schedules/types.d.ts.map +1 -0
  116. package/dist/schedules/types.js +11 -0
  117. package/dist/schedules/types.js.map +1 -0
  118. package/dist/schedules/tz.d.ts +44 -0
  119. package/dist/schedules/tz.d.ts.map +1 -0
  120. package/dist/schedules/tz.js +141 -0
  121. package/dist/schedules/tz.js.map +1 -0
  122. package/dist/skills/index.d.ts +1 -1
  123. package/dist/skills/index.d.ts.map +1 -1
  124. package/dist/skills/index.js +1 -1
  125. package/dist/skills/index.js.map +1 -1
  126. package/dist/skills/loader.d.ts +16 -3
  127. package/dist/skills/loader.d.ts.map +1 -1
  128. package/dist/skills/loader.js +48 -4
  129. package/dist/skills/loader.js.map +1 -1
  130. package/dist/skills/registry.d.ts +6 -0
  131. package/dist/skills/registry.d.ts.map +1 -1
  132. package/dist/skills/registry.js +1 -0
  133. package/dist/skills/registry.js.map +1 -1
  134. package/dist/tools/builtins/browser-url.d.ts +83 -0
  135. package/dist/tools/builtins/browser-url.d.ts.map +1 -0
  136. package/dist/tools/builtins/browser-url.js +240 -0
  137. package/dist/tools/builtins/browser-url.js.map +1 -0
  138. package/dist/tools/builtins/browser.d.ts +367 -0
  139. package/dist/tools/builtins/browser.d.ts.map +1 -0
  140. package/dist/tools/builtins/browser.js +704 -0
  141. package/dist/tools/builtins/browser.js.map +1 -0
  142. package/dist/tools/builtins/computer-use-coordinates.d.ts +65 -0
  143. package/dist/tools/builtins/computer-use-coordinates.d.ts.map +1 -0
  144. package/dist/tools/builtins/computer-use-coordinates.js +123 -0
  145. package/dist/tools/builtins/computer-use-coordinates.js.map +1 -0
  146. package/dist/tools/builtins/computer-use-image.d.ts +77 -0
  147. package/dist/tools/builtins/computer-use-image.d.ts.map +1 -0
  148. package/dist/tools/builtins/computer-use-image.js +223 -0
  149. package/dist/tools/builtins/computer-use-image.js.map +1 -0
  150. package/dist/tools/builtins/computer-use.d.ts +519 -14
  151. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  152. package/dist/tools/builtins/computer-use.js +1188 -183
  153. package/dist/tools/builtins/computer-use.js.map +1 -1
  154. package/dist/tools/builtins/index.d.ts +2 -1
  155. package/dist/tools/builtins/index.d.ts.map +1 -1
  156. package/dist/tools/builtins/index.js +1 -1
  157. package/dist/tools/builtins/index.js.map +1 -1
  158. package/dist/tools/builtins/skill.d.ts +74 -0
  159. package/dist/tools/builtins/skill.d.ts.map +1 -1
  160. package/dist/tools/builtins/skill.js +214 -159
  161. package/dist/tools/builtins/skill.js.map +1 -1
  162. package/dist/tools/defineTool.d.ts +4 -0
  163. package/dist/tools/defineTool.d.ts.map +1 -1
  164. package/dist/tools/defineTool.js +8 -0
  165. package/dist/tools/defineTool.js.map +1 -1
  166. package/dist/tools/schedules/index.d.ts +5 -0
  167. package/dist/tools/schedules/index.d.ts.map +1 -0
  168. package/dist/tools/schedules/index.js +4 -0
  169. package/dist/tools/schedules/index.js.map +1 -0
  170. package/dist/tools/schedules/loop-tool.d.ts +14 -0
  171. package/dist/tools/schedules/loop-tool.d.ts.map +1 -0
  172. package/dist/tools/schedules/loop-tool.js +81 -0
  173. package/dist/tools/schedules/loop-tool.js.map +1 -0
  174. package/dist/tools/schedules/present.d.ts +16 -0
  175. package/dist/tools/schedules/present.d.ts.map +1 -0
  176. package/dist/tools/schedules/present.js +71 -0
  177. package/dist/tools/schedules/present.js.map +1 -0
  178. package/dist/tools/schedules/prompt-scan.d.ts +17 -0
  179. package/dist/tools/schedules/prompt-scan.d.ts.map +1 -0
  180. package/dist/tools/schedules/prompt-scan.js +92 -0
  181. package/dist/tools/schedules/prompt-scan.js.map +1 -0
  182. package/dist/tools/schedules/schedule-tool.d.ts +17 -0
  183. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -0
  184. package/dist/tools/schedules/schedule-tool.js +418 -0
  185. package/dist/tools/schedules/schedule-tool.js.map +1 -0
  186. package/dist/tools/schedules/types.d.ts +252 -0
  187. package/dist/tools/schedules/types.d.ts.map +1 -0
  188. package/dist/tools/schedules/types.js +11 -0
  189. package/dist/tools/schedules/types.js.map +1 -0
  190. package/dist/types/authorization/index.d.ts +107 -9
  191. package/dist/types/authorization/index.d.ts.map +1 -1
  192. package/dist/types/authorization/index.js +16 -1
  193. package/dist/types/authorization/index.js.map +1 -1
  194. package/dist/types/browser/index.d.ts +280 -0
  195. package/dist/types/browser/index.d.ts.map +1 -0
  196. package/dist/types/browser/index.js +12 -0
  197. package/dist/types/browser/index.js.map +1 -0
  198. package/dist/types/computer-use/index.d.ts +176 -0
  199. package/dist/types/computer-use/index.d.ts.map +1 -1
  200. package/dist/types/computer-use/index.js.map +1 -1
  201. package/dist/types/session/events.d.ts +6 -0
  202. package/dist/types/session/events.d.ts.map +1 -1
  203. package/dist/types/session/events.js.map +1 -1
  204. package/dist/types/session/records.d.ts +23 -0
  205. package/dist/types/session/records.d.ts.map +1 -1
  206. package/dist/types/session/records.js +9 -0
  207. package/dist/types/session/records.js.map +1 -1
  208. package/dist/types/tool/index.d.ts +60 -0
  209. package/dist/types/tool/index.d.ts.map +1 -1
  210. package/dist/types/tool/index.js.map +1 -1
  211. package/dist/types/tool/presentation.d.ts +7 -0
  212. package/dist/types/tool/presentation.d.ts.map +1 -1
  213. package/dist/utils/frontmatter.d.ts +18 -2
  214. package/dist/utils/frontmatter.d.ts.map +1 -1
  215. package/dist/utils/frontmatter.js +13 -3
  216. package/dist/utils/frontmatter.js.map +1 -1
  217. package/dist/utils/id.d.ts +8 -0
  218. package/dist/utils/id.d.ts.map +1 -1
  219. package/dist/utils/id.js +12 -0
  220. package/dist/utils/id.js.map +1 -1
  221. package/package.json +3 -1
  222. package/src/authorization/gate.ts +37 -4
  223. package/src/authorization/rules.ts +55 -7
  224. package/src/authorization/shell-lexer.ts +109 -51
  225. package/src/bridge/a2a/mapper.ts +2 -0
  226. package/src/bridge/sse/mapper.ts +1 -0
  227. package/src/directory/types.ts +2 -0
  228. package/src/pricing/catalogue.generated.ts +28 -4
  229. package/src/pricing/rates.source.json +27 -6
  230. package/src/prompt/coding-agent-doctrine.ts +1 -0
  231. package/src/public-runtime.ts +43 -1
  232. package/src/public-tools.ts +54 -1
  233. package/src/public-types.ts +55 -0
  234. package/src/registry/tool/callable.ts +37 -0
  235. package/src/registry/tool/execute.ts +8 -1
  236. package/src/runtime/query/declined.ts +12 -0
  237. package/src/runtime/query/executor/tool-call-admission.ts +60 -16
  238. package/src/runtime/query/executor.ts +36 -5
  239. package/src/runtime/query/index.ts +1 -0
  240. package/src/runtime/query/iteration/index.ts +8 -0
  241. package/src/runtime/query/iteration/phases/context.ts +6 -0
  242. package/src/runtime/query/iteration/phases/handoff.ts +74 -0
  243. package/src/runtime/query/iteration/phases/index.ts +1 -0
  244. package/src/runtime/query/iteration/phases/tool-review.ts +11 -4
  245. package/src/runtime/query/resume-pending.ts +3 -2
  246. package/src/runtime/query/review-policy.ts +107 -18
  247. package/src/schedules/cron.ts +202 -0
  248. package/src/schedules/describe.ts +138 -0
  249. package/src/schedules/errors.ts +15 -0
  250. package/src/schedules/evaluate.ts +178 -0
  251. package/src/schedules/index.ts +18 -0
  252. package/src/schedules/next-fire.ts +257 -0
  253. package/src/schedules/spec.ts +210 -0
  254. package/src/schedules/types.ts +163 -0
  255. package/src/schedules/tz.ts +155 -0
  256. package/src/skills/index.ts +1 -1
  257. package/src/skills/loader.ts +55 -4
  258. package/src/skills/registry.ts +8 -0
  259. package/src/tools/builtins/browser-url.ts +251 -0
  260. package/src/tools/builtins/browser.ts +817 -0
  261. package/src/tools/builtins/computer-use-coordinates.ts +144 -0
  262. package/src/tools/builtins/computer-use-image.ts +278 -0
  263. package/src/tools/builtins/computer-use.ts +1485 -191
  264. package/src/tools/builtins/index.ts +7 -1
  265. package/src/tools/builtins/skill.ts +304 -156
  266. package/src/tools/defineTool.ts +13 -0
  267. package/src/tools/schedules/index.ts +4 -0
  268. package/src/tools/schedules/loop-tool.ts +85 -0
  269. package/src/tools/schedules/present.ts +88 -0
  270. package/src/tools/schedules/prompt-scan.ts +96 -0
  271. package/src/tools/schedules/schedule-tool.ts +482 -0
  272. package/src/tools/schedules/types.ts +265 -0
  273. package/src/types/authorization/index.ts +81 -2
  274. package/src/types/browser/index.ts +341 -0
  275. package/src/types/computer-use/index.ts +202 -0
  276. package/src/types/session/events.ts +6 -0
  277. package/src/types/session/records.ts +10 -0
  278. package/src/types/tool/index.ts +61 -0
  279. package/src/types/tool/presentation.ts +7 -0
  280. package/src/utils/frontmatter.ts +29 -3
  281. package/src/utils/id.ts +14 -0
@@ -0,0 +1,252 @@
1
+ /**
2
+ * The host side of the `schedule` and `session_loop` tools.
3
+ *
4
+ * The SDK holds the tool's contract with the model — its schema, its refusals
5
+ * and its confirmation rule — and nothing about where jobs are stored or how
6
+ * a confirmation is drawn. The host supplies both, and it computes every
7
+ * field a person is asked to confirm: the model's own words are never what
8
+ * the confirmation shows as fact.
9
+ */
10
+ /** A rule effect, in the vocabulary of the CLI's `[permissions]` table. */
11
+ export type ScheduleRuleEffect = 'allow' | 'ask' | 'deny';
12
+ /** What the model proposes. Validated by the tool's schema, then by the host. */
13
+ export interface ScheduleJobDraft {
14
+ readonly name: string;
15
+ readonly prompt: string;
16
+ /** Schedule words: `every 30m`, `0 9 * * 1-5`, `at 09:00`, `in 2h`. */
17
+ readonly when: string;
18
+ /** Folder the job runs in. Absent: the session's working directory. */
19
+ readonly folder?: string;
20
+ /** IANA zone for a cron expression or a local time. Absent: the host's. */
21
+ readonly tz?: string;
22
+ readonly permissions: {
23
+ readonly preset?: 'read-only' | 'edit-in-folder';
24
+ /**
25
+ * What happens to a call no rule covers. The model may choose `park`
26
+ * (wait for the operator) or `deny`; running uncovered calls without
27
+ * asking is an operator decision the tool cannot propose.
28
+ */
29
+ readonly unmatched: 'park' | 'deny';
30
+ readonly execution?: 'host' | 'sandbox';
31
+ readonly rules?: Readonly<Record<string, ScheduleRuleEffect | Readonly<Record<string, ScheduleRuleEffect>>>>;
32
+ /**
33
+ * Browser access for the run. Absent: the `browser` and `browser_act`
34
+ * tools are denied. Present: only the listed sites are reachable, at
35
+ * the listed level, and every other site is denied — there is no
36
+ * catch-all key. The tool refuses this block unless the host sets
37
+ * {@link ScheduleToolHost.browserGrants}.
38
+ */
39
+ readonly browser?: ScheduleBrowserGrant;
40
+ };
41
+ readonly budget?: {
42
+ readonly maxIterations?: number;
43
+ readonly tokenBudget?: number;
44
+ readonly timeoutMs?: number;
45
+ };
46
+ }
47
+ /**
48
+ * How far a scheduled run may go on one site. `read`: open and read pages,
49
+ * never change them. `ask`: open and change pages, each change parked for the
50
+ * operator. `act`: open and change pages without asking.
51
+ */
52
+ export type ScheduleBrowserSiteLevel = 'read' | 'ask' | 'act';
53
+ /** A scheduled job's browser grant. */
54
+ export interface ScheduleBrowserGrant {
55
+ /** The browser profile the run uses; the operator's, signed in beforehand. */
56
+ readonly profile: string;
57
+ /**
58
+ * Canonical site key (`https://github.com`, `https://*.example.com`,
59
+ * `http://localhost:*`) to level. The tool canonicalises the keys the
60
+ * model wrote (see `canonicalizeBrowserSitePattern`) before the host sees
61
+ * them. Unlisted sites are denied.
62
+ */
63
+ readonly sites: Readonly<Record<string, ScheduleBrowserSiteLevel>>;
64
+ /** Show the browser window during the run. Default: no window. */
65
+ readonly headed?: boolean;
66
+ }
67
+ /** What the person confirming is shown. Every field is the host's own computation. */
68
+ export interface ScheduleJobPreview {
69
+ readonly name: string;
70
+ /** The canonical folder the job would run in. */
71
+ readonly folder: string;
72
+ /** True when `folder` is outside the session's working directory and added directories. */
73
+ readonly outsideSessionRoots: boolean;
74
+ readonly prompt: string;
75
+ /** The schedule in words, with its zone. */
76
+ readonly schedule: string;
77
+ /** The next fire times, ISO-8601 UTC. */
78
+ readonly nextFireTimes: readonly string[];
79
+ /** The permission set expanded to one line per rule, config denies included. */
80
+ readonly rules: readonly string[];
81
+ readonly unmatched: 'park' | 'deny' | 'allow';
82
+ readonly execution: 'host' | 'sandbox';
83
+ /** A rule lets the run reach the network. */
84
+ readonly networkAccess: boolean;
85
+ readonly budget: {
86
+ readonly maxIterations: number;
87
+ readonly tokenBudget: number;
88
+ readonly timeoutMs: number;
89
+ };
90
+ /** Runs per day at most, times the token budget. Absent for a one-shot. */
91
+ readonly dailyTokenCeiling?: number;
92
+ /** Provider and model the job is pinned to. */
93
+ readonly model: string;
94
+ /** Where the run's credential comes from, in words. */
95
+ readonly credentialSource?: string;
96
+ /** Anything the host wants said in the warning colour. */
97
+ readonly warnings: readonly string[];
98
+ }
99
+ /** A job as the `list` action reports it. */
100
+ export interface ScheduleJobSummary {
101
+ readonly name: string;
102
+ readonly folder: string;
103
+ readonly state: string;
104
+ readonly schedule: string;
105
+ readonly nextFireAt?: string;
106
+ readonly lastStatus?: string;
107
+ /** Present only for jobs in the session's own folder. */
108
+ readonly prompt?: string;
109
+ /**
110
+ * True for a job whose folder is the session's own. A host that lists
111
+ * other folders' jobs sets it so the model can tell them apart; the tool
112
+ * marks such a job `(this folder)`.
113
+ */
114
+ readonly inSessionFolder?: boolean;
115
+ }
116
+ /**
117
+ * What the model proposes to change in an existing job. Every field left
118
+ * out keeps the job's current value. `permissions`, when given, is the whole
119
+ * new set, with the same limits as a new job's; the host keeps the job's
120
+ * `execution` when it is not given, and its additional directories.
121
+ */
122
+ export interface ScheduleJobChanges {
123
+ readonly prompt?: string;
124
+ readonly when?: string;
125
+ readonly folder?: string;
126
+ readonly tz?: string;
127
+ readonly permissions?: ScheduleJobDraft['permissions'];
128
+ readonly budget?: ScheduleJobDraft['budget'];
129
+ }
130
+ /** A proposed change to a job, as the host computed it. */
131
+ export interface ScheduleJobUpdateProposal {
132
+ /** The job as it would be once changed. Every field is the host's own computation. */
133
+ readonly preview: ScheduleJobPreview;
134
+ /**
135
+ * What differs from the job as it stands (and from edits saved since it
136
+ * was last confirmed), one line each: `- ` what goes, `+ ` what comes.
137
+ */
138
+ readonly changes: readonly string[];
139
+ /** The change touches what a run may do: its rules, `unmatched`, where it runs, its browser grant. */
140
+ readonly permissionsChange: boolean;
141
+ }
142
+ /** What the person confirming a change is shown. */
143
+ export interface ScheduleUpdateRequest extends ScheduleJobUpdateProposal {
144
+ /** The prompt tripwire's findings over `preview.prompt`. */
145
+ readonly promptFindings: readonly string[];
146
+ /** Always `model` from this tool. */
147
+ readonly proposedBy: 'model';
148
+ }
149
+ /** What the person answered to a proposed job. */
150
+ export type ScheduleConfirmAnswer = 'create' | 'create-paused' | 'cancel';
151
+ export interface ScheduleConfirmRequest {
152
+ readonly preview: ScheduleJobPreview;
153
+ /** The prompt tripwire's findings over `preview.prompt`. */
154
+ readonly promptFindings: readonly string[];
155
+ /** Always `model` from this tool: the banner says it was not the operator. */
156
+ readonly proposedBy: 'model';
157
+ }
158
+ export interface ScheduleToolHost {
159
+ /**
160
+ * The host can store and enforce {@link ScheduleJobDraft.permissions}
161
+ * `.browser`. Absent or false: the tool refuses a draft carrying one,
162
+ * rather than let the host drop it and confirm a job the model believes
163
+ * can use the browser.
164
+ */
165
+ readonly browserGrants?: boolean;
166
+ /** Validate the draft and compute what the person will be shown. Throws with a message on a refusal. */
167
+ preview(draft: ScheduleJobDraft): Promise<ScheduleJobPreview>;
168
+ /**
169
+ * Ask the person. Anything but `create` or `create-paused` — `cancel`, a
170
+ * thrown error, a closed screen — means no job.
171
+ *
172
+ * `signal` fires when the tool's own confirmation deadline elapses or the
173
+ * turn is aborted; a host that draws a screen closes it then rather than
174
+ * leaving it live after the tool has given up on the answer.
175
+ */
176
+ confirm(request: ScheduleConfirmRequest, signal?: AbortSignal): Promise<ScheduleConfirmAnswer>;
177
+ /**
178
+ * Create the job the person confirmed. `note`, when given, is appended to
179
+ * what the model is told, for what the person must still do before the
180
+ * job runs (install a scheduler, say): the model reports the job as set
181
+ * up otherwise.
182
+ */
183
+ create(draft: ScheduleJobDraft, preview: ScheduleJobPreview, options: {
184
+ readonly paused: boolean;
185
+ }): Promise<{
186
+ readonly name: string;
187
+ readonly note?: string;
188
+ }>;
189
+ /**
190
+ * Jobs, the session folder's in full, other folders' without their
191
+ * prompts. `allFolders: false` lets a host list only the session
192
+ * folder's; a host may list every job regardless, marking the session
193
+ * folder's with {@link ScheduleJobSummary.inSessionFolder}. The tool says
194
+ * "No scheduled jobs." when this returns none, so a host that filters
195
+ * says so only for its folder.
196
+ */
197
+ list(options: {
198
+ readonly allFolders: boolean;
199
+ }): Promise<readonly ScheduleJobSummary[]>;
200
+ /** A job by name or id prefix, or undefined. */
201
+ find(job: string): Promise<ScheduleJobSummary | undefined>;
202
+ /** Ask the person to confirm resuming or deleting a job. See `confirm` on `signal`. */
203
+ confirmAction(job: ScheduleJobSummary, action: 'resume' | 'delete', signal?: AbortSignal): Promise<boolean>;
204
+ pause(job: string): Promise<void>;
205
+ resume(job: string): Promise<void>;
206
+ delete(job: string): Promise<void>;
207
+ /**
208
+ * Validate a change to `job` (a name or id prefix) and compute what the
209
+ * person will be shown. Throws with a message on a refusal. The tool
210
+ * offers `update` only when a host has all three of `previewUpdate`,
211
+ * `confirmUpdate` and `update`.
212
+ */
213
+ previewUpdate?(job: string, changes: ScheduleJobChanges): Promise<ScheduleJobUpdateProposal>;
214
+ /**
215
+ * Ask the person whether to save the change. Anything but `true` — a
216
+ * thrown error, a closed screen — changes nothing. See `confirm` on
217
+ * `signal`.
218
+ */
219
+ confirmUpdate?(request: ScheduleUpdateRequest, signal?: AbortSignal): Promise<boolean>;
220
+ /**
221
+ * Save the change the person confirmed, to the same job: its id and its
222
+ * history are kept, and the confirmation is the person's. `note` as for
223
+ * `create`.
224
+ */
225
+ update?(preview: ScheduleJobPreview): Promise<{
226
+ readonly name: string;
227
+ readonly note?: string;
228
+ }>;
229
+ }
230
+ /** A prompt the session re-sends to itself on an interval. */
231
+ export interface SessionLoop {
232
+ readonly id: string;
233
+ /** The interval in words. */
234
+ readonly schedule: string;
235
+ readonly prompt: string;
236
+ readonly createdAt: string;
237
+ readonly expiresAt?: string;
238
+ readonly lastFiredAt?: string;
239
+ readonly createdBy: 'operator' | 'model';
240
+ }
241
+ export interface SessionLoopHost {
242
+ /** Throws with a message when the interval is not usable or the loop limit is reached. */
243
+ create(request: {
244
+ readonly interval: string;
245
+ readonly prompt: string;
246
+ readonly createdBy: 'model';
247
+ }): Promise<SessionLoop>;
248
+ list(): readonly SessionLoop[];
249
+ /** Stop one loop by id, or every loop with `all`. Returns how many stopped. */
250
+ delete(id: string): Promise<number>;
251
+ }
252
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/schedules/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The host side of the `schedule` and `session_loop` tools.
3
+ *
4
+ * The SDK holds the tool's contract with the model — its schema, its refusals
5
+ * and its confirmation rule — and nothing about where jobs are stored or how
6
+ * a confirmation is drawn. The host supplies both, and it computes every
7
+ * field a person is asked to confirm: the model's own words are never what
8
+ * the confirmation shows as fact.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/schedules/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { ShellDialect, ToolDefinition } from '../tool/index.js';
2
3
  export type GateDecision = 'allow' | 'deny' | 'review';
3
4
  export interface GateEvaluationResult {
4
5
  readonly decision: GateDecision;
@@ -81,11 +82,68 @@ export type AuthorizationRule = {
81
82
  /** The argument key, at the top level of the tool's input. */
82
83
  argument: string;
83
84
  pattern: string;
84
- decision: 'allow' | 'deny';
85
+ /**
86
+ * `review` sends a matching call to the review policy — a person,
87
+ * or the turn's mode — instead of deciding it here. It matches as
88
+ * `deny` does (any segment of a command line), because it is a
89
+ * restriction: a rule that asks before `git push` must also ask
90
+ * before `true; git push`.
91
+ */
92
+ decision: 'allow' | 'deny' | 'review';
85
93
  } | {
86
94
  type: 'allow_by_tier';
87
95
  tiers: string[];
96
+ } | {
97
+ /**
98
+ * A decision the host computes in code, in its place in the list.
99
+ *
100
+ * A pattern is the wrong tool for a rule about what a command line
101
+ * DOES: a regular expression over its text has to re-implement the
102
+ * shell's quoting, and every form it misses (`$'…'`, a line
103
+ * continuation, a quoted separator) is a way past the rule. A host
104
+ * that needs such a rule reads the line with `lexShellCommandLine`
105
+ * and decides on the words bash will pass, here.
106
+ *
107
+ * `decide` returns a decision, or `null` to let the next rule
108
+ * decide. A `decide` that throws is read as `deny`: a rule that
109
+ * could not reach a verdict must not let the call through.
110
+ */
111
+ type: 'predicate';
112
+ /**
113
+ * What the rule refuses or allows, in words. It is the reason the
114
+ * gate reports when this rule decides, so it should tell a model
115
+ * whether a different input could fare better.
116
+ */
117
+ description: string;
118
+ decide: AuthorizationPredicate;
119
+ /**
120
+ * The reason for THIS call, when `decide` returned a decision: what
121
+ * in the input matched, and where. The gate reports it instead of
122
+ * {@link description}. Absent, returning `null` or throwing, the
123
+ * gate reports `description`.
124
+ *
125
+ * A rule that refuses on several grounds and reports one fixed
126
+ * sentence leaves the model, and the person reading the refusal,
127
+ * to guess which ground it was. A scheduled run's refusal listed
128
+ * everything the rule protects when one word of the command had
129
+ * matched.
130
+ */
131
+ describe?: (call: AuthorizationPredicateCall) => string | null;
88
132
  };
133
+ /** The call an `AuthorizationRule` of type `predicate` is asked about. */
134
+ export interface AuthorizationPredicateCall {
135
+ readonly toolName: string;
136
+ readonly toolInput: unknown;
137
+ readonly toolDef: ToolDefinition | undefined;
138
+ /**
139
+ * The shell a command line in this call runs in: the caller's
140
+ * (`ToolCallContext.commandDialect`), or `sh` when it did not say, which
141
+ * is the reading that holds whichever shell runs it.
142
+ */
143
+ readonly commandDialect: ShellDialect;
144
+ }
145
+ /** The code behind an `AuthorizationRule` of type `predicate`. */
146
+ export type AuthorizationPredicate = (call: AuthorizationPredicateCall) => GateDecision | null;
89
147
  export declare const AuthorizationRuleSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
90
148
  type: z.ZodLiteral<"allow_read_only">;
91
149
  excludeCategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -148,18 +206,18 @@ export declare const AuthorizationRuleSchema: z.ZodDiscriminatedUnion<"type", [z
148
206
  toolNames: z.ZodArray<z.ZodString, "many">;
149
207
  argument: z.ZodString;
150
208
  pattern: z.ZodString;
151
- decision: z.ZodEnum<["allow", "deny"]>;
209
+ decision: z.ZodEnum<["allow", "deny", "review"]>;
152
210
  }, "strip", z.ZodTypeAny, {
153
211
  type: "argument_pattern";
154
212
  pattern: string;
155
213
  toolNames: string[];
156
- decision: "allow" | "deny";
214
+ decision: "allow" | "deny" | "review";
157
215
  argument: string;
158
216
  }, {
159
217
  type: "argument_pattern";
160
218
  pattern: string;
161
219
  toolNames: string[];
162
- decision: "allow" | "deny";
220
+ decision: "allow" | "deny" | "review";
163
221
  argument: string;
164
222
  }>, z.ZodObject<{
165
223
  type: z.ZodLiteral<"allow_by_tier">;
@@ -170,6 +228,21 @@ export declare const AuthorizationRuleSchema: z.ZodDiscriminatedUnion<"type", [z
170
228
  }, {
171
229
  type: "allow_by_tier";
172
230
  tiers: string[];
231
+ }>, z.ZodObject<{
232
+ type: z.ZodLiteral<"predicate">;
233
+ description: z.ZodString;
234
+ decide: z.ZodType<AuthorizationPredicate, z.ZodTypeDef, AuthorizationPredicate>;
235
+ describe: z.ZodOptional<z.ZodType<(call: AuthorizationPredicateCall) => string | null, z.ZodTypeDef, (call: AuthorizationPredicateCall) => string | null>>;
236
+ }, "strip", z.ZodTypeAny, {
237
+ type: "predicate";
238
+ description: string;
239
+ decide: AuthorizationPredicate;
240
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
241
+ }, {
242
+ type: "predicate";
243
+ description: string;
244
+ decide: AuthorizationPredicate;
245
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
173
246
  }>]>;
174
247
  export declare const AuthorizationGateConfigSchema: z.ZodObject<{
175
248
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -235,18 +308,18 @@ export declare const AuthorizationGateConfigSchema: z.ZodObject<{
235
308
  toolNames: z.ZodArray<z.ZodString, "many">;
236
309
  argument: z.ZodString;
237
310
  pattern: z.ZodString;
238
- decision: z.ZodEnum<["allow", "deny"]>;
311
+ decision: z.ZodEnum<["allow", "deny", "review"]>;
239
312
  }, "strip", z.ZodTypeAny, {
240
313
  type: "argument_pattern";
241
314
  pattern: string;
242
315
  toolNames: string[];
243
- decision: "allow" | "deny";
316
+ decision: "allow" | "deny" | "review";
244
317
  argument: string;
245
318
  }, {
246
319
  type: "argument_pattern";
247
320
  pattern: string;
248
321
  toolNames: string[];
249
- decision: "allow" | "deny";
322
+ decision: "allow" | "deny" | "review";
250
323
  argument: string;
251
324
  }>, z.ZodObject<{
252
325
  type: z.ZodLiteral<"allow_by_tier">;
@@ -257,6 +330,21 @@ export declare const AuthorizationGateConfigSchema: z.ZodObject<{
257
330
  }, {
258
331
  type: "allow_by_tier";
259
332
  tiers: string[];
333
+ }>, z.ZodObject<{
334
+ type: z.ZodLiteral<"predicate">;
335
+ description: z.ZodString;
336
+ decide: z.ZodType<AuthorizationPredicate, z.ZodTypeDef, AuthorizationPredicate>;
337
+ describe: z.ZodOptional<z.ZodType<(call: AuthorizationPredicateCall) => string | null, z.ZodTypeDef, (call: AuthorizationPredicateCall) => string | null>>;
338
+ }, "strip", z.ZodTypeAny, {
339
+ type: "predicate";
340
+ description: string;
341
+ decide: AuthorizationPredicate;
342
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
343
+ }, {
344
+ type: "predicate";
345
+ description: string;
346
+ decide: AuthorizationPredicate;
347
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
260
348
  }>]>, "many">>;
261
349
  allowReadOnlyTools: z.ZodDefault<z.ZodBoolean>;
262
350
  /**
@@ -295,11 +383,16 @@ export declare const AuthorizationGateConfigSchema: z.ZodObject<{
295
383
  type: "argument_pattern";
296
384
  pattern: string;
297
385
  toolNames: string[];
298
- decision: "allow" | "deny";
386
+ decision: "allow" | "deny" | "review";
299
387
  argument: string;
300
388
  } | {
301
389
  type: "allow_by_tier";
302
390
  tiers: string[];
391
+ } | {
392
+ type: "predicate";
393
+ description: string;
394
+ decide: AuthorizationPredicate;
395
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
303
396
  })[];
304
397
  allowReadOnlyTools: boolean;
305
398
  denyDangerousPatterns: boolean;
@@ -330,11 +423,16 @@ export declare const AuthorizationGateConfigSchema: z.ZodObject<{
330
423
  type: "argument_pattern";
331
424
  pattern: string;
332
425
  toolNames: string[];
333
- decision: "allow" | "deny";
426
+ decision: "allow" | "deny" | "review";
334
427
  argument: string;
335
428
  } | {
336
429
  type: "allow_by_tier";
337
430
  tiers: string[];
431
+ } | {
432
+ type: "predicate";
433
+ description: string;
434
+ decide: AuthorizationPredicate;
435
+ describe?: ((call: AuthorizationPredicateCall) => string | null) | undefined;
338
436
  })[] | undefined;
339
437
  allowReadOnlyTools?: boolean | undefined;
340
438
  allowReadOnlyExcludeCategories?: string[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/authorization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEtD,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAC1B;IACA;;;;;;;OAOG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B,GACD;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7C;IACA;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;CACpC,GACD;IACA;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;CACzB,GACD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AA6C7C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASlC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIzC;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIF,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEnF;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;GAcG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/authorization/index.ts"],"names":[],"mappings":"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"}
@@ -36,12 +36,26 @@ const ArgumentPatternSchema = z.object({
36
36
  // fail-open shape this rule type exists to remove.
37
37
  argument: z.string().min(1),
38
38
  pattern: z.string().max(MAX_CUSTOM_PATTERN_LENGTH),
39
- decision: z.enum(['allow', 'deny']),
39
+ decision: z.enum(['allow', 'deny', 'review']),
40
40
  });
41
41
  const AllowByTierSchema = z.object({
42
42
  type: z.literal('allow_by_tier'),
43
43
  tiers: z.array(z.string()),
44
44
  });
45
+ const PredicateSchema = z.object({
46
+ type: z.literal('predicate'),
47
+ // A rule that says nothing about itself produces a refusal nobody can
48
+ // reason about.
49
+ description: z.string().min(1),
50
+ decide: z.custom((value) => typeof value === 'function', {
51
+ message: 'decide must be a function',
52
+ }),
53
+ // Named here so the gate's own parse keeps it: zod strips what a schema
54
+ // does not name.
55
+ describe: z
56
+ .custom((value) => typeof value === 'function', { message: 'describe must be a function' })
57
+ .optional(),
58
+ });
45
59
  export const AuthorizationRuleSchema = z.discriminatedUnion('type', [
46
60
  AllowReadOnlySchema,
47
61
  DenyDangerousPatternsSchema,
@@ -51,6 +65,7 @@ export const AuthorizationRuleSchema = z.discriminatedUnion('type', [
51
65
  CustomPatternSchema,
52
66
  ArgumentPatternSchema,
53
67
  AllowByTierSchema,
68
+ PredicateSchema,
54
69
  ]);
55
70
  export const AuthorizationGateConfigSchema = z.object({
56
71
  enabled: z.boolean().default(false),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/authorization/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/authorization/index.ts"],"names":[],"mappings":"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"}