orizu 0.5.20 → 0.5.21

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 (260) hide show
  1. package/dist/archive-artifacts-cli.d.ts +50 -0
  2. package/dist/archive-artifacts-cli.d.ts.map +1 -0
  3. package/dist/artifact-archive.d.ts +48 -0
  4. package/dist/artifact-archive.d.ts.map +1 -0
  5. package/dist/artifact-pull.d.ts +22 -0
  6. package/dist/artifact-pull.d.ts.map +1 -0
  7. package/dist/banner.d.ts +3 -0
  8. package/dist/banner.d.ts.map +1 -0
  9. package/dist/connectors-cli.d.ts +31 -0
  10. package/dist/connectors-cli.d.ts.map +1 -0
  11. package/dist/credentials.d.ts +46 -0
  12. package/dist/credentials.d.ts.map +1 -0
  13. package/dist/csv.d.ts +49 -0
  14. package/dist/csv.d.ts.map +1 -0
  15. package/dist/dataset-download.d.ts +6 -0
  16. package/dist/dataset-download.d.ts.map +1 -0
  17. package/dist/dataset-edit-rows.d.ts +10 -0
  18. package/dist/dataset-edit-rows.d.ts.map +1 -0
  19. package/dist/dataset-upload-snapshot.d.ts +13 -0
  20. package/dist/dataset-upload-snapshot.d.ts.map +1 -0
  21. package/dist/daytona-slice-rehearsal.d.ts +89 -0
  22. package/dist/daytona-slice-rehearsal.d.ts.map +1 -0
  23. package/dist/daytona-slice.d.ts +106 -0
  24. package/dist/daytona-slice.d.ts.map +1 -0
  25. package/dist/deploy-key-merge-core.d.ts +121 -0
  26. package/dist/deploy-key-merge-core.d.ts.map +1 -0
  27. package/dist/diff-comments-cli.d.ts +12 -0
  28. package/dist/diff-comments-cli.d.ts.map +1 -0
  29. package/dist/diff-comments-cli.js +3 -0
  30. package/dist/egress-allowlist-cli.d.ts +23 -0
  31. package/dist/egress-allowlist-cli.d.ts.map +1 -0
  32. package/dist/egress-policy.d.ts +108 -0
  33. package/dist/egress-policy.d.ts.map +1 -0
  34. package/dist/error-response.d.ts +9 -0
  35. package/dist/error-response.d.ts.map +1 -0
  36. package/dist/file-parser.d.ts +5 -0
  37. package/dist/file-parser.d.ts.map +1 -0
  38. package/dist/gepa-engine-dispatch.d.ts +9 -0
  39. package/dist/gepa-engine-dispatch.d.ts.map +1 -0
  40. package/dist/gepa-engine-dispatch.js +48 -2
  41. package/dist/gepa-python-command.d.ts +6 -0
  42. package/dist/gepa-python-command.d.ts.map +1 -0
  43. package/dist/gepa-python-paths.d.ts +6 -0
  44. package/dist/gepa-python-paths.d.ts.map +1 -0
  45. package/dist/gepa-python-paths.js +6 -3
  46. package/dist/git-credential.d.ts +69 -0
  47. package/dist/git-credential.d.ts.map +1 -0
  48. package/dist/git-recovery-environment.d.ts +31 -0
  49. package/dist/git-recovery-environment.d.ts.map +1 -0
  50. package/dist/github-setup.d.ts +122 -0
  51. package/dist/github-setup.d.ts.map +1 -0
  52. package/dist/global-flags.d.ts +12 -0
  53. package/dist/global-flags.d.ts.map +1 -0
  54. package/dist/help.d.ts +46 -0
  55. package/dist/help.d.ts.map +1 -0
  56. package/dist/help.js +91 -23
  57. package/dist/hosted-boot.d.ts +273 -0
  58. package/dist/hosted-boot.d.ts.map +1 -0
  59. package/dist/hosted-bootstrap-rehearsal.d.ts +86 -0
  60. package/dist/hosted-bootstrap-rehearsal.d.ts.map +1 -0
  61. package/dist/hosted-bootstrap.d.ts +188 -0
  62. package/dist/hosted-bootstrap.d.ts.map +1 -0
  63. package/dist/hosted-broker-server.d.ts +50 -0
  64. package/dist/hosted-broker-server.d.ts.map +1 -0
  65. package/dist/hosted-git-http-server.d.ts +36 -0
  66. package/dist/hosted-git-http-server.d.ts.map +1 -0
  67. package/dist/hosted-harness-claude.d.ts +195 -0
  68. package/dist/hosted-harness-claude.d.ts.map +1 -0
  69. package/dist/hosted-harness-opencode.d.ts +227 -0
  70. package/dist/hosted-harness-opencode.d.ts.map +1 -0
  71. package/dist/hosted-harness.d.ts +118 -0
  72. package/dist/hosted-harness.d.ts.map +1 -0
  73. package/dist/hosted-harvest.d.ts +68 -0
  74. package/dist/hosted-harvest.d.ts.map +1 -0
  75. package/dist/hosted-headless.d.ts +72 -0
  76. package/dist/hosted-headless.d.ts.map +1 -0
  77. package/dist/hosted-loop-lifecycle.d.ts +206 -0
  78. package/dist/hosted-loop-lifecycle.d.ts.map +1 -0
  79. package/dist/hosted-loop.d.ts +170 -0
  80. package/dist/hosted-loop.d.ts.map +1 -0
  81. package/dist/hosted-run-event-sink.d.ts +222 -0
  82. package/dist/hosted-run-event-sink.d.ts.map +1 -0
  83. package/dist/hosted-runtime-assets.d.ts +186 -0
  84. package/dist/hosted-runtime-assets.d.ts.map +1 -0
  85. package/dist/hosted-session-cli.d.ts +258 -0
  86. package/dist/hosted-session-cli.d.ts.map +1 -0
  87. package/dist/hosted-skill-staging.d.ts +73 -0
  88. package/dist/hosted-skill-staging.d.ts.map +1 -0
  89. package/dist/http.d.ts +8 -0
  90. package/dist/http.d.ts.map +1 -0
  91. package/dist/index.d.ts +22 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +88 -92
  94. package/dist/instruction-set-gepa-launch.d.ts +3 -0
  95. package/dist/instruction-set-gepa-launch.d.ts.map +1 -0
  96. package/dist/instruction-set-gepa-launch.js +15 -0
  97. package/dist/instruction-set-loader.d.ts +6 -0
  98. package/dist/instruction-set-loader.d.ts.map +1 -0
  99. package/dist/instruction-set-loader.js +59 -0
  100. package/dist/instruction-set-manifest.d.ts +14 -0
  101. package/dist/instruction-set-manifest.d.ts.map +1 -0
  102. package/dist/instruction-set-manifest.js +162 -0
  103. package/dist/instruction-sets-cli.d.ts +40 -0
  104. package/dist/instruction-sets-cli.d.ts.map +1 -0
  105. package/dist/instruction-sets-cli.js +361 -0
  106. package/dist/json-response.d.ts +4 -0
  107. package/dist/json-response.d.ts.map +1 -0
  108. package/dist/jsonl-stream.d.ts +8 -0
  109. package/dist/jsonl-stream.d.ts.map +1 -0
  110. package/dist/kill-switch-cli.d.ts +30 -0
  111. package/dist/kill-switch-cli.d.ts.map +1 -0
  112. package/dist/loopback-serve.d.ts +25 -0
  113. package/dist/loopback-serve.d.ts.map +1 -0
  114. package/dist/manifests-cli.d.ts +22 -0
  115. package/dist/manifests-cli.d.ts.map +1 -0
  116. package/dist/markdown-report-input.d.ts +7 -0
  117. package/dist/markdown-report-input.d.ts.map +1 -0
  118. package/dist/merge-job.d.ts +155 -0
  119. package/dist/merge-job.d.ts.map +1 -0
  120. package/dist/model-configs-cli.d.ts +19 -0
  121. package/dist/model-configs-cli.d.ts.map +1 -0
  122. package/dist/model-configs-cli.js +104 -0
  123. package/dist/optimization-export-cli.d.ts +19 -0
  124. package/dist/optimization-export-cli.d.ts.map +1 -0
  125. package/dist/optimizations-list-cli.d.ts +20 -0
  126. package/dist/optimizations-list-cli.d.ts.map +1 -0
  127. package/dist/optimizations-promote-cli.d.ts +8 -0
  128. package/dist/optimizations-promote-cli.d.ts.map +1 -0
  129. package/dist/optimizations-promote-cli.js +34 -0
  130. package/dist/option-validation.d.ts +15 -0
  131. package/dist/option-validation.d.ts.map +1 -0
  132. package/dist/preview-runtime.d.ts +63 -0
  133. package/dist/preview-runtime.d.ts.map +1 -0
  134. package/dist/prompt-draft-push.d.ts +60 -0
  135. package/dist/prompt-draft-push.d.ts.map +1 -0
  136. package/dist/prompt-label-cli.d.ts +11 -0
  137. package/dist/prompt-label-cli.d.ts.map +1 -0
  138. package/dist/prompt-label-cli.js +29 -0
  139. package/dist/prompt-length-wire.d.ts +28 -0
  140. package/dist/prompt-length-wire.d.ts.map +1 -0
  141. package/dist/prompt-report-cli.d.ts +10 -0
  142. package/dist/prompt-report-cli.d.ts.map +1 -0
  143. package/dist/prompt-summary-table.d.ts +15 -0
  144. package/dist/prompt-summary-table.d.ts.map +1 -0
  145. package/dist/prompt-summary-table.js +6 -0
  146. package/dist/registration-tag-warning.d.ts +32 -0
  147. package/dist/registration-tag-warning.d.ts.map +1 -0
  148. package/dist/report-comments-cli.d.ts +16 -0
  149. package/dist/report-comments-cli.d.ts.map +1 -0
  150. package/dist/report-markdown-blankness.d.ts +2 -0
  151. package/dist/report-markdown-blankness.d.ts.map +1 -0
  152. package/dist/report-replacement-warning.d.ts +17 -0
  153. package/dist/report-replacement-warning.d.ts.map +1 -0
  154. package/dist/repository-backup-core.d.ts +225 -0
  155. package/dist/repository-backup-core.d.ts.map +1 -0
  156. package/dist/repository-recovery-manifest.d.ts +83 -0
  157. package/dist/repository-recovery-manifest.d.ts.map +1 -0
  158. package/dist/run-event-digest.d.ts +74 -0
  159. package/dist/run-event-digest.d.ts.map +1 -0
  160. package/dist/runner-dir-verify.d.ts +66 -0
  161. package/dist/runner-dir-verify.d.ts.map +1 -0
  162. package/dist/runner-instruction-set-contract.d.ts +24 -0
  163. package/dist/runner-instruction-set-contract.d.ts.map +1 -0
  164. package/dist/runner-instruction-set-contract.js +50 -0
  165. package/dist/sandbox-hygiene.d.ts +45 -0
  166. package/dist/sandbox-hygiene.d.ts.map +1 -0
  167. package/dist/sandbox-provider.d.ts +193 -0
  168. package/dist/sandbox-provider.d.ts.map +1 -0
  169. package/dist/scorer-draft-push.d.ts +50 -0
  170. package/dist/scorer-draft-push.d.ts.map +1 -0
  171. package/dist/scorers-cli.d.ts +20 -0
  172. package/dist/scorers-cli.d.ts.map +1 -0
  173. package/dist/scorers-cli.js +22 -0
  174. package/dist/scorers-verify-parity-bridge.d.ts +16 -0
  175. package/dist/scorers-verify-parity-bridge.d.ts.map +1 -0
  176. package/dist/scorers-verify-parity-bridge.js +90 -0
  177. package/dist/scorers-verify-parity.d.ts +81 -0
  178. package/dist/scorers-verify-parity.d.ts.map +1 -0
  179. package/dist/scorers-verify-parity.js +502 -0
  180. package/dist/scores-accept-cli.d.ts +21 -0
  181. package/dist/scores-accept-cli.d.ts.map +1 -0
  182. package/dist/secret-redaction.d.ts +47 -0
  183. package/dist/secret-redaction.d.ts.map +1 -0
  184. package/dist/session-timeline.d.ts +54 -0
  185. package/dist/session-timeline.d.ts.map +1 -0
  186. package/dist/setup-prompt.d.ts +5 -0
  187. package/dist/setup-prompt.d.ts.map +1 -0
  188. package/dist/skill-installer.d.ts +68 -0
  189. package/dist/skill-installer.d.ts.map +1 -0
  190. package/dist/skilled-proposer-launch.d.ts +7 -0
  191. package/dist/skilled-proposer-launch.d.ts.map +1 -0
  192. package/dist/skilled-proposer-launch.js +60 -0
  193. package/dist/smoke.d.ts +102 -0
  194. package/dist/smoke.d.ts.map +1 -0
  195. package/dist/start-intent.d.ts +12 -0
  196. package/dist/start-intent.d.ts.map +1 -0
  197. package/dist/task-assignment-manifest.d.ts +15 -0
  198. package/dist/task-assignment-manifest.d.ts.map +1 -0
  199. package/dist/task-create-error.d.ts +18 -0
  200. package/dist/task-create-error.d.ts.map +1 -0
  201. package/dist/team-connectors-cli.d.ts +29 -0
  202. package/dist/team-connectors-cli.d.ts.map +1 -0
  203. package/dist/types.d.ts +39 -0
  204. package/dist/types.d.ts.map +1 -0
  205. package/dist/vercel-sandbox-provider.d.ts +156 -0
  206. package/dist/vercel-sandbox-provider.d.ts.map +1 -0
  207. package/dist/workbench-cli.d.ts +233 -0
  208. package/dist/workbench-cli.d.ts.map +1 -0
  209. package/dist/workspace-sync.d.ts +207 -0
  210. package/dist/workspace-sync.d.ts.map +1 -0
  211. package/dist/workspace.d.ts +92 -0
  212. package/dist/workspace.d.ts.map +1 -0
  213. package/dist/zip-draft-push.d.ts +55 -0
  214. package/dist/zip-draft-push.d.ts.map +1 -0
  215. package/package.json +14 -1
  216. package/requirements/README.md +138 -0
  217. package/requirements/skilled-proposer.in +66 -0
  218. package/requirements/skilled-proposer.lock +265 -0
  219. package/scripts/ensure-skilled-proposer-venv.mjs +5 -0
  220. package/scripts/refresh-skilled-proposer-lock.mjs +256 -0
  221. package/src/diff-comments-cli.ts +4 -0
  222. package/src/gepa-engine-dispatch.ts +42 -2
  223. package/src/gepa-python-paths.ts +6 -3
  224. package/src/help.ts +93 -23
  225. package/src/index.ts +99 -126
  226. package/src/instruction-set-gepa-launch.ts +28 -0
  227. package/src/instruction-set-loader.ts +37 -0
  228. package/src/instruction-set-manifest.ts +120 -0
  229. package/src/instruction-sets-cli.ts +306 -0
  230. package/src/model-configs-cli.ts +119 -0
  231. package/src/optimizations-promote-cli.ts +41 -0
  232. package/src/prompt-label-cli.ts +55 -0
  233. package/src/prompt-summary-table.ts +12 -0
  234. package/src/runner-instruction-set-contract.ts +64 -0
  235. package/src/scorers-cli.ts +40 -0
  236. package/src/scorers-verify-parity-bridge.ts +90 -0
  237. package/src/scorers-verify-parity.ts +564 -0
  238. package/src/skilled-proposer-launch.ts +89 -0
  239. package/src/skilled-proposer-venv-manager.mjs +757 -0
  240. package/tsconfig.json +2 -0
  241. package/vendor/orizu-gepa/src/orizu_gepa_connector/__init__.py +2 -1
  242. package/vendor/orizu-gepa/src/orizu_gepa_connector/adapter.py +8 -2
  243. package/vendor/orizu-gepa/src/orizu_gepa_connector/callbacks.py +17 -3
  244. package/vendor/orizu-gepa/src/orizu_gepa_connector/engine.py +100 -8
  245. package/vendor/orizu-gepa/src/orizu_gepa_connector/instruction_set_loader.py +52 -0
  246. package/vendor/orizu-gepa/src/orizu_gepa_connector/reflection.py +92 -12
  247. package/vendor/orizu-gepa/src/orizu_gepa_connector/runtime.py +100 -22
  248. package/vendor/orizu-gepa/src/orizu_gepa_connector/skilled_proposer_bridge.py +381 -0
  249. package/vendor/orizu-gepa/src/orizu_gepa_connector/stop_conditions.py +17 -0
  250. package/vendor/orizu-gepa/src/orizu_gepa_connector/translator.py +2 -1
  251. package/vendor/orizu-gepa-python/src/orizu_gepa/client.py +52 -7
  252. package/vendor/orizu-gepa-python/src/orizu_gepa/local_log.py +4 -1
  253. package/vendor/orizu-gepa-python/src/orizu_gepa/optimizer.py +10 -5
  254. package/vendor/orizu-gepa-python/src/orizu_gepa/reflection.py +323 -68
  255. package/vendor/orizu-gepa-python/src/orizu_gepa/runner.py +207 -13
  256. package/vendor/skills/orizu-cli/SKILL.md +2 -0
  257. package/vendor/skills/orizu-cli/references/cli-reference.md +85 -1
  258. package/vendor/skills/orizu-cli/references/migrate-existing-gepa-setup.md +303 -0
  259. package/vendor/skills/orizu-cli/references/optimization-with-gepa.md +25 -0
  260. package/vendor/skills/orizu-cli/references/prompt-control-plane.md +108 -8
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Workspace session/run visibility commands (ALI-902 CLI half).
3
+ *
4
+ * Pure logic + injected HTTP: command functions do not parse process.argv and
5
+ * do not print. The thin `workbenchCommand` entry point owns CLI argument
6
+ * parsing and human/JSON output.
7
+ */
8
+ import { type StartIntentIdGenerator } from './start-intent.js';
9
+ export interface WorkbenchFetcher {
10
+ (path: string, init?: RequestInit): Promise<Response>;
11
+ }
12
+ export interface WorkbenchSleep {
13
+ (ms: number): Promise<void>;
14
+ }
15
+ export interface WorkbenchRunCosts {
16
+ modelCostUsd?: number | null;
17
+ tokensInput?: number | null;
18
+ tokensOutput?: number | null;
19
+ tokensCacheRead?: number | null;
20
+ tokensCacheWrite?: number | null;
21
+ tokensReasoning?: number | null;
22
+ costUpdatedAt?: string | null;
23
+ }
24
+ export interface WorkbenchRunSummary extends WorkbenchRunCosts {
25
+ id: string;
26
+ status: string;
27
+ }
28
+ export interface WorkbenchSession {
29
+ id: string;
30
+ workspaceId?: string;
31
+ projectId?: string | null;
32
+ actorUserId?: string;
33
+ actorType?: string;
34
+ status: string;
35
+ clientInfo?: Record<string, unknown>;
36
+ startedAt?: string | null;
37
+ endedAt?: string | null;
38
+ createdAt?: string;
39
+ updatedAt?: string;
40
+ runs?: WorkbenchRunSummary[];
41
+ /** Session rollup: sum of the runs' server-aggregated cost totals (ALI-1089). */
42
+ costs?: WorkbenchRunCosts;
43
+ [key: string]: unknown;
44
+ }
45
+ export interface WorkbenchRun extends WorkbenchRunCosts {
46
+ id: string;
47
+ workspaceSessionId?: string;
48
+ workspaceId?: string;
49
+ projectId?: string | null;
50
+ actorUserId?: string;
51
+ actorType?: string;
52
+ title?: string;
53
+ status: string;
54
+ evidence?: Record<string, unknown>;
55
+ summary?: Record<string, unknown>;
56
+ latestSequence?: number;
57
+ startedAt?: string | null;
58
+ finishedAt?: string | null;
59
+ createdAt?: string;
60
+ updatedAt?: string;
61
+ [key: string]: unknown;
62
+ }
63
+ export interface WorkbenchRunEvent {
64
+ sequence: number;
65
+ eventId: string;
66
+ eventType: string;
67
+ occurredAt?: string | null;
68
+ payload?: Record<string, unknown>;
69
+ [key: string]: unknown;
70
+ }
71
+ export interface CommonWorkbenchOptions {
72
+ fetcher?: WorkbenchFetcher;
73
+ cwd?: string;
74
+ }
75
+ export interface SessionGitResult {
76
+ status: number;
77
+ stdout: string;
78
+ stderr: string;
79
+ }
80
+ /** Injectable git seam (tests use a recording fake; prod spawns git). */
81
+ export type SessionGitRunner = (args: string[], opts?: {
82
+ cwd?: string;
83
+ }) => SessionGitResult;
84
+ export interface SessionCheckout {
85
+ branch: string;
86
+ state: 'checked-out' | 'skipped';
87
+ detail: string;
88
+ }
89
+ export interface SessionBranchSync {
90
+ branch: string;
91
+ /** Local-only commit count vs origin/<branch>; null when not computable. */
92
+ ahead: number | null;
93
+ /** origin/<branch>-only commit count; null when not computable. */
94
+ behind: number | null;
95
+ }
96
+ export interface SessionStartOptions extends CommonWorkbenchOptions {
97
+ workspaceId?: string | null;
98
+ projectSlug?: string | null;
99
+ clientInfo?: Record<string, unknown>;
100
+ git?: SessionGitRunner;
101
+ /**
102
+ * Opt-in local ergonomics (ALI-1028): fetch + check out the session branch
103
+ * when cwd is the workbench clone. Off by default so library callers (e.g.
104
+ * smoke) never mutate the local checkout; the human CLI path turns it on.
105
+ */
106
+ localCheckout?: boolean;
107
+ /** Injectable bounded repository-readiness delay for tests. */
108
+ sleep?: WorkbenchSleep;
109
+ /** Injectable UUIDv4 generator; one value is replayed for every retry. */
110
+ generateStartIntentId?: StartIntentIdGenerator;
111
+ /** Existing immutable intent when resuming a bounded pending start. */
112
+ startIntentId?: string | null;
113
+ /** Existing session bound to startIntentId when resuming provisioning. */
114
+ reconcileSessionId?: string | null;
115
+ }
116
+ export interface SessionStatusOptions extends CommonWorkbenchOptions {
117
+ workspaceId?: string | null;
118
+ sessionId?: string | null;
119
+ status?: string | null;
120
+ git?: SessionGitRunner;
121
+ }
122
+ export interface SessionEndOptions {
123
+ fetcher?: WorkbenchFetcher;
124
+ sessionId: string;
125
+ }
126
+ export interface SessionFinishOptions {
127
+ fetcher?: WorkbenchFetcher;
128
+ sessionId: string;
129
+ projectSlug?: string | null;
130
+ cwd?: string;
131
+ git?: SessionGitRunner;
132
+ /** Opt-in: stage/commit/push local session-branch work before finishing. */
133
+ push?: boolean;
134
+ /** Commit message for --push; a default is used when omitted. */
135
+ message?: string | null;
136
+ }
137
+ export interface SessionFinishResult {
138
+ outcome: string;
139
+ branch?: string;
140
+ branchDeleted?: boolean;
141
+ manifest?: Record<string, unknown>;
142
+ /** Local uncommitted/unpushed work detected at finish time (ALI-1028). */
143
+ localWarnings?: string[];
144
+ /** True when --push staged/committed/pushed local work before finishing. */
145
+ pushed?: boolean;
146
+ }
147
+ export interface SessionStartResult {
148
+ session: WorkbenchSession;
149
+ /** Local checkout attempt for the session branch; null when the session has no branch. */
150
+ checkout?: SessionCheckout | null;
151
+ }
152
+ /** A bounded repository wait exhausted without losing the immutable identity
153
+ * needed to resume safely. CLI callers can show the command; library callers
154
+ * can use the structured fields directly. */
155
+ export declare class SessionRepositoryPendingError extends Error {
156
+ readonly sessionId: string;
157
+ readonly startIntentId: string;
158
+ readonly resumeCommand: string;
159
+ constructor(input: {
160
+ readonly sessionId: string;
161
+ readonly startIntentId: string;
162
+ readonly projectSlug: string | null;
163
+ readonly workspaceDirectory: string | null;
164
+ });
165
+ }
166
+ export interface SessionStatusResult {
167
+ session?: WorkbenchSession;
168
+ sessions?: WorkbenchSession[];
169
+ /** Local ahead/behind vs the remote session branch (single-session status only). */
170
+ branchSync?: SessionBranchSync | null;
171
+ }
172
+ export interface SessionEndResult {
173
+ session: WorkbenchSession;
174
+ branchStatus?: string;
175
+ }
176
+ export interface WorkbenchRunStartOptions {
177
+ fetcher?: WorkbenchFetcher;
178
+ sessionId: string;
179
+ title: string;
180
+ projectSlug?: string | null;
181
+ }
182
+ export interface WorkbenchRunStatusOptions {
183
+ fetcher?: WorkbenchFetcher;
184
+ runId: string;
185
+ }
186
+ export interface WorkbenchRunTerminalOptions {
187
+ fetcher?: WorkbenchFetcher;
188
+ runId: string;
189
+ status: string;
190
+ summary?: string | null;
191
+ evidence?: Record<string, unknown> | null;
192
+ }
193
+ export interface WorkbenchRunResult {
194
+ run: WorkbenchRun;
195
+ }
196
+ export interface TailOnceResult {
197
+ events: WorkbenchRunEvent[];
198
+ cursor: number;
199
+ runStatus: string;
200
+ }
201
+ export interface TailWorkbenchRunOptions {
202
+ fetcher?: WorkbenchFetcher;
203
+ runId: string;
204
+ after?: number;
205
+ limit?: number;
206
+ intervalSeconds?: number;
207
+ once?: boolean;
208
+ sleep?: WorkbenchSleep;
209
+ onEvent?: (event: WorkbenchRunEvent) => void;
210
+ }
211
+ export interface WorkbenchCommandIo {
212
+ json: boolean;
213
+ print: (line: string) => void;
214
+ fetcher?: WorkbenchFetcher;
215
+ sleep?: WorkbenchSleep;
216
+ /** Injectable git for the session-branch ergonomics (ALI-1028). */
217
+ git?: SessionGitRunner;
218
+ /** Test seam for the session-start idempotency UUID. */
219
+ generateStartIntentId?: StartIntentIdGenerator;
220
+ }
221
+ export declare const SESSION_REPOSITORY_PENDING_RETRY_MS = 2000;
222
+ export declare const SESSION_REPOSITORY_PENDING_MAX_RETRIES = 30;
223
+ export declare function runSessionStart(opts?: SessionStartOptions): Promise<SessionStartResult>;
224
+ export declare function runSessionStatus(opts?: SessionStatusOptions): Promise<SessionStatusResult>;
225
+ export declare function runSessionEnd(opts: SessionEndOptions): Promise<SessionEndResult>;
226
+ export declare function runSessionFinish(opts: SessionFinishOptions): Promise<SessionFinishResult>;
227
+ export declare function runWorkbenchRunStart(opts: WorkbenchRunStartOptions): Promise<WorkbenchRunResult>;
228
+ export declare function runWorkbenchRunStatus(opts: WorkbenchRunStatusOptions): Promise<WorkbenchRunResult>;
229
+ export declare function runWorkbenchRunTerminal(opts: WorkbenchRunTerminalOptions): Promise<WorkbenchRunResult>;
230
+ export declare function tailOnce(fetcher: WorkbenchFetcher, runId: string, cursor: number, limit?: number): Promise<TailOnceResult>;
231
+ export declare function tailWorkbenchRun(opts: TailWorkbenchRunOptions): Promise<TailOnceResult>;
232
+ export declare function workbenchCommand(args: string[], io: WorkbenchCommandIo): Promise<number>;
233
+ //# sourceMappingURL=workbench-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-cli.d.ts","sourceRoot":"","sources":["../src/workbench-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Workspace tracked-resource sync commands (ALI-976 CLI half, revised spec).
3
+ *
4
+ * Pure logic + injected HTTP: no process.argv parsing and no printing live in
5
+ * the command functions (the thin `workspaceSyncCommand` entry point prints).
6
+ * This module implements the client side of the ALI-933 sync semantics:
7
+ *
8
+ * - Inventory: walk the durable workspace contract (manifests + instruction/
9
+ * memory/readme files) and compute each tracked file's content sha256.
10
+ * `.orizu/**` is cache-only by definition (spec §6) and never inventoried.
11
+ * Symlinked plain files hash the LINK TARGET PATH string (spec §3.1), so
12
+ * editing `AGENTS.md` never falsely dirties a symlinked `CLAUDE.md`;
13
+ * pointer files (no-symlinks mode) hash their own bytes.
14
+ * - Missing/untracked visibility (spec §3.2): cache-known paths absent from
15
+ * the inventory are reported `missing` locally and sent to sync as
16
+ * `{path, missing: true}` (the server echoes without touching stored
17
+ * truth). Files under managed primitive dirs covered by no manifest are
18
+ * reported `untracked` in LOCAL status only — never sent to sync.
19
+ * - Cache snapshots: last-sync `base` hashes stored under
20
+ * `.orizu/cache/sync/<sha256-of-path>.json`. Filenames are path-hashed so
21
+ * the cache never mirrors the workspace directory structure. Cache is
22
+ * gitignored and safely deletable (spec §6); it is `local`/`cache`, never a
23
+ * contract.
24
+ * - Commands: `status` (local three-way against the cache; `--remote`
25
+ * performs the SAME server-side reconciliation as `sync` — it registers
26
+ * and updates tracked-resource records; there is no read-only remote
27
+ * status in v0, spec §3.1 — but never writes local cache), `sync`
28
+ * (metadata-first; cache base advances ONLY on a `clean`
29
+ * convergence-confirmation), `pull` (metadata fast-forward, only when the
30
+ * server carries real truth), and `apply` (repo → server promotion;
31
+ * refuses DB-native owners, conflicts, and remote-newer via server 409s).
32
+ *
33
+ * v0 boundary: `pull` reconciles the manifest canonical block + cache only,
34
+ * and ONLY from server-carried truth (serverSha256/serverVersionId) — never
35
+ * from local bytes. It does not materialize bulk primitive content — source
36
+ * files converge through Git, and DB-native/object bytes materialize through
37
+ * the primitive-specific commands (e.g. `orizu prompts pull`,
38
+ * `orizu datasets download`). Full bulk-content pull is deferred (spec §8).
39
+ *
40
+ * Apply identity (spec §3.1): strictly the sync-recorded tracked-resource ROW
41
+ * id from the cache snapshot (`resourceId`). There is NO fallback to the
42
+ * manifest's `canonical.serviceId` (informational/legacy). Without a recorded
43
+ * row id the command directs the user to run `orizu workspace sync` first.
44
+ * On any apply 409 (owner refusal, conflicted, remote-newer, CAS loss) the
45
+ * recovery loop is: re-sync, converge per the reported status, retry.
46
+ */
47
+ import { type CanonicalOwner, type RepoState } from './workspace.js';
48
+ export declare const TRACKED_RESOURCE_KINDS: readonly ["team_manifest", "project_manifest", "instruction_file", "memory_file", "readme", "dataset", "app", "task", "prompt", "scorer", "optimization", "other"];
49
+ export type TrackedResourceKind = (typeof TRACKED_RESOURCE_KINDS)[number];
50
+ export type WorkspaceSyncFetcher = (path: string, init?: RequestInit) => Promise<Response>;
51
+ export interface InventoryEntry {
52
+ path: string;
53
+ absPath: string;
54
+ kind: TrackedResourceKind;
55
+ owner: CanonicalOwner;
56
+ repoState: RepoState;
57
+ projectSlug: string | null;
58
+ serviceResourceId: string | null;
59
+ versionId: string | null;
60
+ contentSha256: string;
61
+ manifestPath: string | null;
62
+ isManifest: boolean;
63
+ }
64
+ export interface CacheSnapshot {
65
+ path: string;
66
+ baseSha256: string | null;
67
+ versionId: string | null;
68
+ lastSyncedAt: string | null;
69
+ /** Server tracked-resource ROW id — the ONLY apply identity (spec §3.1). */
70
+ resourceId?: string | null;
71
+ /**
72
+ * Metadata-only-pull guard (spec §3.3): set when a `pull` advanced this
73
+ * repo-owned resource's base to a server hash the working content does not
74
+ * yet match — i.e. the base moved without the bytes being delivered. While
75
+ * set, `apply` MUST refuse (a CAS apply would pass and silently revert the
76
+ * pulled version). Absent/false means not pending (backward-compatible with
77
+ * pre-guard snapshots that lack the field).
78
+ */
79
+ contentPending?: boolean;
80
+ /** The pulled base hash the working content must reconcile to before apply. */
81
+ pendingBaseSha256?: string | null;
82
+ }
83
+ export interface CommonOptions {
84
+ cwd?: string;
85
+ fetcher?: WorkspaceSyncFetcher;
86
+ workspaceId?: string | null;
87
+ }
88
+ export declare function sha256Hex(value: string | Buffer): string;
89
+ export declare function readCanonical(manifest: Record<string, unknown> | null): Record<string, unknown>;
90
+ export declare function stringOrNull(value: unknown): string | null;
91
+ /** Walk the durable workspace contract and return one entry per tracked file. */
92
+ export declare function collectInventory(cwd?: string): InventoryEntry[];
93
+ /**
94
+ * Files present under managed primitive dirs that no inventory rule covers
95
+ * (spec §3.2 `untracked`). A file is covered when an inventoried manifest
96
+ * lives in its directory or any ancestor within the managed dir — body files
97
+ * adjacent to their manifest belong to that resource and converge via Git.
98
+ * Reported in LOCAL status only; never sent to sync.
99
+ */
100
+ export declare function collectUntrackedPaths(cwd: string, inventory: InventoryEntry[]): string[];
101
+ export declare function cacheSnapshotPath(cwd: string, relPath: string): string;
102
+ export declare function readCacheSnapshot(cwd: string, relPath: string): CacheSnapshot | null;
103
+ export declare function writeCacheSnapshot(cwd: string, snapshot: CacheSnapshot): void;
104
+ interface SyncResourceResult {
105
+ /** Server tracked-resource ROW id (null for untracked — no row exists). */
106
+ id: string | null;
107
+ path: string;
108
+ status: string;
109
+ serverVersionId: string | null;
110
+ serverSha256: string | null;
111
+ lastSyncedAt: string | null;
112
+ }
113
+ export declare function attachedWorkspaceId(root: string): string | null;
114
+ export interface StatusResourceLine {
115
+ path: string;
116
+ kind: TrackedResourceKind | null;
117
+ owner: CanonicalOwner | null;
118
+ repoState: RepoState | null;
119
+ localSha: string | null;
120
+ baseSha: string | null;
121
+ dirty: boolean;
122
+ /**
123
+ * Metadata-only-pull guard (spec §3.3): the base was pulled ahead of the
124
+ * working content, so `apply` will refuse until the bytes are delivered.
125
+ */
126
+ contentPending?: boolean;
127
+ /** Definitional local statuses: cache-known-but-deleted / rule-less files. */
128
+ localStatus?: 'missing' | 'untracked';
129
+ remoteStatus?: string;
130
+ serverVersionId?: string | null;
131
+ }
132
+ /** Resolves a git ref (e.g. `origin/main`) to a SHA; null when absent/non-git. */
133
+ export type GitRefReader = (cwd: string, ref: string) => string | null;
134
+ /**
135
+ * "repo moved since your last pull" — the server's recorded DEFAULT-branch push
136
+ * SHA differs from what the LOCAL repo knows the default branch to be. Compared
137
+ * against the default-branch ref (never bare HEAD) so being on a feature branch
138
+ * or carrying local commits never triggers a false positive.
139
+ */
140
+ export interface FreshnessSignal {
141
+ serverSha: string;
142
+ branch: string | null;
143
+ pushedAt: string | null;
144
+ localDefaultSha: string;
145
+ }
146
+ /** A session branch worth reporting: an old active session or an ended, unmerged one. */
147
+ export interface StaleSessionBranch {
148
+ sessionId: string;
149
+ branch: string;
150
+ startedAt: string | null;
151
+ reason: 'active-stale' | 'unmerged';
152
+ }
153
+ export interface StatusResult {
154
+ root: string;
155
+ workspaceId: string | null;
156
+ remote: boolean;
157
+ resources: StatusResourceLine[];
158
+ /** Set only when the hosted repo's default branch moved past the local ref (ALI-996). */
159
+ freshness?: FreshnessSignal | null;
160
+ /** Branched sessions worth attention; empty for local-only workspaces (ALI-972). */
161
+ staleSessionBranches?: StaleSessionBranch[];
162
+ }
163
+ export declare function runWorkspaceStatus(opts?: CommonOptions & {
164
+ remote?: boolean;
165
+ gitRef?: GitRefReader;
166
+ now?: () => number;
167
+ }): Promise<StatusResult>;
168
+ export interface SyncResultLine extends SyncResourceResult {
169
+ cacheAdvanced: boolean;
170
+ }
171
+ export interface SyncResult {
172
+ root: string;
173
+ workspaceId: string;
174
+ resources: SyncResultLine[];
175
+ }
176
+ export declare function runWorkspaceSync(opts?: CommonOptions): Promise<SyncResult>;
177
+ export interface PullResult {
178
+ path: string;
179
+ status: 'converged' | 'refused' | 'noop';
180
+ remoteStatus: string | null;
181
+ reason?: string;
182
+ note?: string;
183
+ manifestUpdated: boolean;
184
+ cacheAdvanced: boolean;
185
+ }
186
+ export declare function runWorkspacePull(targetPath: string, opts?: CommonOptions): Promise<PullResult>;
187
+ export interface ApplyResult {
188
+ path: string;
189
+ status: 'applied' | 'refused' | 'noop';
190
+ reason?: string;
191
+ /** Recovery guidance for server 409 refusals (re-sync, then re-drive). */
192
+ hint?: string;
193
+ versionId?: string | null;
194
+ contentSha256?: string | null;
195
+ lastSyncedAt?: string | null;
196
+ manifestUpdated: boolean;
197
+ cacheAdvanced: boolean;
198
+ }
199
+ export declare function runWorkspaceApply(targetPath: string, opts?: CommonOptions): Promise<ApplyResult>;
200
+ export interface WorkspaceSyncIo {
201
+ json: boolean;
202
+ print: (line: string) => void;
203
+ fetcher?: WorkspaceSyncFetcher;
204
+ }
205
+ export declare function workspaceSyncCommand(args: string[], io: WorkspaceSyncIo): Promise<number>;
206
+ export {};
207
+ //# sourceMappingURL=workspace-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-sync.d.ts","sourceRoot":"","sources":["../src/workspace-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export declare const WORKSPACE_DIR_NAME = ".orizu";
2
+ export declare const WORKSPACE_SCHEMA_VERSION = "orizu.workspace.v0";
3
+ export declare const WORKSPACE_SETUP_VERSION = "0.1.0";
4
+ export declare const WORKSPACE_ROOT_FILES: readonly ["README.md", "orizu.team.json", "AGENTS.md", "CLAUDE.md", "Memory.md", ".gitignore"];
5
+ export declare const WORKSPACE_ROOT_DIRS: readonly [".orizu", "source-repos", "projects", "sessions"];
6
+ export declare const PROJECT_ROOT_FILES: readonly ["README.md", "memory.md", "orizu.project.json", ".gitignore"];
7
+ export declare const PROJECT_PRIMITIVE_DIRS: readonly ["datasets", "apps", "tasks", "prompts", "judges", "scorers", "runners", "optimizations"];
8
+ export declare const REPO_STATES: readonly ["source", "draft", "snapshot", "mirror", "cache", "object_ref_only"];
9
+ export declare const CANONICAL_OWNERS: readonly ["repo", "orizu-db", "object-storage", "local"];
10
+ export type RepoState = typeof REPO_STATES[number];
11
+ export type CanonicalOwner = typeof CANONICAL_OWNERS[number];
12
+ export type WorkspaceOperationAction = 'create_file' | 'create_dir' | 'append_gitignore' | 'create_symlink' | 'write_pointer_file' | 'rename_file' | 'replace_file' | 'replace_symlink';
13
+ export interface WorkspaceOperation {
14
+ action: WorkspaceOperationAction;
15
+ path: string;
16
+ safe: boolean;
17
+ reason: string;
18
+ content?: string;
19
+ entries?: string[];
20
+ sourcePath?: string;
21
+ target?: string;
22
+ }
23
+ export interface WorkspaceProjectSeed {
24
+ slug: string;
25
+ id?: string | null;
26
+ name?: string | null;
27
+ }
28
+ export type WorkspaceFindingSeverity = 'error' | 'warning' | 'info';
29
+ export interface WorkspaceFinding {
30
+ severity: WorkspaceFindingSeverity;
31
+ code: string;
32
+ path?: string;
33
+ message: string;
34
+ fixable: boolean;
35
+ }
36
+ export interface WorkspaceInitOptions {
37
+ cwd?: string;
38
+ workspaceRoot?: string;
39
+ teamSlug?: string | null;
40
+ teamId?: string | null;
41
+ projectSlug?: string | null;
42
+ projects?: WorkspaceProjectSeed[];
43
+ baseUrl?: string | null;
44
+ serviceOrigin?: string | null;
45
+ attachWorkspaceId?: string | null;
46
+ cliVersion?: string | null;
47
+ dryRun?: boolean;
48
+ validateOnly?: boolean;
49
+ fix?: boolean;
50
+ noSymlinks?: boolean;
51
+ }
52
+ export interface WorkspaceInitResult {
53
+ root: string;
54
+ state: 'created' | 'exists' | 'would-create' | 'validated' | 'invalid' | 'repaired';
55
+ gitignoreUpdated: boolean;
56
+ actions: string[];
57
+ operations: WorkspaceOperation[];
58
+ findings: WorkspaceFinding[];
59
+ }
60
+ interface WorkspaceSetupPlan {
61
+ root: string;
62
+ teamSlug: string;
63
+ projects: WorkspaceProjectSeed[];
64
+ operations: WorkspaceOperation[];
65
+ findings: WorkspaceFinding[];
66
+ exists: boolean;
67
+ }
68
+ export declare function getWorkspaceRoot(cwd?: string): string;
69
+ export declare function workspaceExists(cwd?: string): boolean;
70
+ /**
71
+ * `orizu setup`'s hosted path clones the workbench repo into the resolved
72
+ * workspace root; `git clone` refuses to write into ANY non-empty directory —
73
+ * including one holding only macOS `.DS_Store` cruft — and fails late with a
74
+ * raw git error (ALI QA: founder ran `orizu setup` from an existing folder).
75
+ * Call this right before the hosted clone so the failure is immediate and
76
+ * actionable instead of surfacing mid-clone.
77
+ *
78
+ * A directory is usable only when it doesn't exist yet, is STRICTLY empty
79
+ * (`readdirSync(...).length === 0` — no `.DS_Store` allowance, since git itself
80
+ * grants none), or is already a recognized Orizu workspace for a re-run
81
+ * (`workspaceExists`, i.e. it has `orizu.team.json`) — the legitimate
82
+ * idempotent-setup case, which must proceed. Symlinks are followed (a symlink
83
+ * to an empty dir is fine); a file, an unreadable dir, and a non-empty dir each
84
+ * get a distinct, friendly message.
85
+ */
86
+ export declare function assertWorkspaceDirUsable(root: string): void;
87
+ export declare function planWorkspaceSetup(options?: WorkspaceInitOptions): WorkspaceSetupPlan;
88
+ export declare function readJsonManifest(path: string): Record<string, unknown> | null;
89
+ export declare function validateWorkspaceContract(options?: WorkspaceInitOptions): WorkspaceFinding[];
90
+ export declare function initOrizuWorkspace(options?: WorkspaceInitOptions): WorkspaceInitResult;
91
+ export {};
92
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ADR-007 P5 (ALI-1074): the session-scoped, commit-first runner/optimizer
3
+ * push.
4
+ *
5
+ * `orizu runners|optimizers push --session <id>` sends the SAME deterministic
6
+ * zip as the legacy push to POST /api/cli/{runners|optimizers}/drafts: the
7
+ * server unpacks the zip's file set and commits it to the session's
8
+ * `orizu/session-*` branch (one Git Data API commit; binary entries travel
9
+ * base64), keeps uploading the zip to storage (dual-write until ALI-1046),
10
+ * and writes a DRAFT row pinning repo_path/content_sha/commit_sha. The draft
11
+ * seals — and gets its version number — when the session branch merges via
12
+ * `orizu session finish` + promotion-manifest apply.
13
+ *
14
+ * Labels cannot ride a draft push (`--label` with `--session` is an error at
15
+ * the command layer): labels address sealed versions only.
16
+ *
17
+ * Lives outside index.ts per the CLI line ratchet (ALI-976); mirrors
18
+ * prompt-draft-push.ts.
19
+ */
20
+ /** index.ts helpers injected by the command dispatcher (report-comments-cli
21
+ * precedent: command modules receive a ctx instead of importing the CLI
22
+ * entrypoint). */
23
+ export interface ZipArtifactPushContext {
24
+ getArg: (name: string) => string | null;
25
+ getPositionalArg: (index: number) => string | null;
26
+ resolveProjectSlug: (projectArg: string | null) => Promise<string>;
27
+ readManifestFile: (dirArg: string) => Record<string, unknown>;
28
+ expandHomePath: (path: string) => string;
29
+ hasJsonFlag: () => boolean;
30
+ printJson: (value: Record<string, unknown>) => void;
31
+ printLine: (message?: string) => void;
32
+ parseJsonResponse: (response: Response, label: string) => Promise<Record<string, unknown>>;
33
+ }
34
+ /** The full `orizu runners|optimizers push` command (moved out of index.ts
35
+ * for the CLI line ratchet): --session takes the ADR-007 P5 commit-first
36
+ * draft path, sessionless stays on the legacy zip-only endpoint. */
37
+ export declare function runZipArtifactPush(kind: 'runner' | 'optimizer', ctx: ZipArtifactPushContext): Promise<void>;
38
+ export interface PushZipDraftInput {
39
+ kind: 'runner' | 'optimizer';
40
+ project: string;
41
+ sessionId: string;
42
+ name: string;
43
+ description?: string;
44
+ manifest: Record<string, unknown>;
45
+ zipBase64: string;
46
+ contentSha256: string;
47
+ /** Test seam; defaults to the authenticated CLI fetcher. */
48
+ fetcher?: (path: string, init?: RequestInit) => Promise<Response>;
49
+ }
50
+ export interface PushZipDraftResult {
51
+ data: Record<string, unknown>;
52
+ message: string;
53
+ }
54
+ export declare function pushZipDraft(input: PushZipDraftInput): Promise<PushZipDraftResult>;
55
+ //# sourceMappingURL=zip-draft-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-draft-push.d.ts","sourceRoot":"","sources":["../src/zip-draft-push.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;kBAEkB;AAClB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAClD,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAClE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACxC,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACnD,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAC3F;AAED;;oEAEoE;AACpE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,QAAQ,GAAG,WAAW,EAC5B,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwCxF"}
package/package.json CHANGED
@@ -1,14 +1,27 @@
1
1
  {
2
2
  "name": "orizu",
3
- "version": "0.5.20",
3
+ "version": "0.5.21",
4
4
  "private": false,
5
5
  "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./instruction-set-loader": {
14
+ "types": "./dist/instruction-set-loader.d.ts",
15
+ "default": "./dist/instruction-set-loader.js"
16
+ }
17
+ },
6
18
  "bin": {
7
19
  "orizu": "dist/index.js"
8
20
  },
9
21
  "files": [
10
22
  "README.md",
11
23
  "dist",
24
+ "requirements",
12
25
  "scripts",
13
26
  "src",
14
27
  "tsconfig.json",