indusagi-coding-agent 0.1.42 → 0.1.44

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 (288) hide show
  1. package/CHANGELOG.md +23 -3
  2. package/README.md +3 -0
  3. package/dist/command-line/args.js +1 -1
  4. package/dist/command-line/args.js.map +1 -1
  5. package/dist/command-line/list-models.js +1 -1
  6. package/dist/command-line/list-models.js.map +1 -1
  7. package/dist/command-line/login-handler.d.ts.map +1 -1
  8. package/dist/command-line/login-handler.js +39 -0
  9. package/dist/command-line/login-handler.js.map +1 -1
  10. package/dist/dev/observe-deep.d.ts +2 -0
  11. package/dist/dev/observe-deep.d.ts.map +1 -0
  12. package/dist/dev/observe-deep.js +333 -0
  13. package/dist/dev/observe-deep.js.map +1 -0
  14. package/dist/dev/observe-smoke.d.ts +2 -0
  15. package/dist/dev/observe-smoke.d.ts.map +1 -0
  16. package/dist/dev/observe-smoke.js +264 -0
  17. package/dist/dev/observe-smoke.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/interfaces/induscode-ui-delegate.d.ts +3 -0
  23. package/dist/interfaces/induscode-ui-delegate.d.ts.map +1 -0
  24. package/dist/interfaces/induscode-ui-delegate.js +148 -0
  25. package/dist/interfaces/induscode-ui-delegate.js.map +1 -0
  26. package/dist/interfaces/terminal-ui/components/footer.d.ts.map +1 -1
  27. package/dist/interfaces/terminal-ui/components/footer.js +9 -15
  28. package/dist/interfaces/terminal-ui/components/footer.js.map +1 -1
  29. package/dist/interfaces/terminal-ui/components/model-selector.d.ts.map +1 -1
  30. package/dist/interfaces/terminal-ui/components/model-selector.js +1 -1
  31. package/dist/interfaces/terminal-ui/components/model-selector.js.map +1 -1
  32. package/dist/interfaces/terminal-ui/components/oauth-selector.d.ts.map +1 -1
  33. package/dist/interfaces/terminal-ui/components/oauth-selector.js +1 -0
  34. package/dist/interfaces/terminal-ui/components/oauth-selector.js.map +1 -1
  35. package/dist/main.d.ts.map +1 -1
  36. package/dist/main.js +42 -18
  37. package/dist/main.js.map +1 -1
  38. package/dist/observe.d.ts +2 -0
  39. package/dist/observe.d.ts.map +1 -0
  40. package/dist/observe.js +2 -0
  41. package/dist/observe.js.map +1 -0
  42. package/dist/runtime/agent-session.d.ts +15 -0
  43. package/dist/runtime/agent-session.d.ts.map +1 -1
  44. package/dist/runtime/agent-session.js +444 -223
  45. package/dist/runtime/agent-session.js.map +1 -1
  46. package/dist/runtime/index.d.ts +5 -0
  47. package/dist/runtime/index.d.ts.map +1 -1
  48. package/dist/runtime/index.js +5 -0
  49. package/dist/runtime/index.js.map +1 -1
  50. package/dist/runtime/model-registry.d.ts +6 -0
  51. package/dist/runtime/model-registry.d.ts.map +1 -1
  52. package/dist/runtime/model-registry.js +71 -14
  53. package/dist/runtime/model-registry.js.map +1 -1
  54. package/dist/runtime/model-resolver.d.ts.map +1 -1
  55. package/dist/runtime/model-resolver.js +6 -3
  56. package/dist/runtime/model-resolver.js.map +1 -1
  57. package/dist/runtime/observe.d.ts +50 -0
  58. package/dist/runtime/observe.d.ts.map +1 -0
  59. package/dist/runtime/observe.js +233 -0
  60. package/dist/runtime/observe.js.map +1 -0
  61. package/dist/runtime/plugins/types.d.ts +3 -0
  62. package/dist/runtime/plugins/types.d.ts.map +1 -1
  63. package/dist/runtime/plugins/types.js.map +1 -1
  64. package/dist/runtime/providers/adapters/claude-cli-adapter.d.ts +19 -0
  65. package/dist/runtime/providers/adapters/claude-cli-adapter.d.ts.map +1 -0
  66. package/dist/runtime/providers/adapters/claude-cli-adapter.js +242 -0
  67. package/dist/runtime/providers/adapters/claude-cli-adapter.js.map +1 -0
  68. package/dist/runtime/providers/adapters/codex-cli-adapter.d.ts +18 -0
  69. package/dist/runtime/providers/adapters/codex-cli-adapter.d.ts.map +1 -0
  70. package/dist/runtime/providers/adapters/codex-cli-adapter.js +177 -0
  71. package/dist/runtime/providers/adapters/codex-cli-adapter.js.map +1 -0
  72. package/dist/runtime/providers/adapters/indusagi-cli-adapter.d.ts +21 -0
  73. package/dist/runtime/providers/adapters/indusagi-cli-adapter.d.ts.map +1 -0
  74. package/dist/runtime/providers/adapters/indusagi-cli-adapter.js +162 -0
  75. package/dist/runtime/providers/adapters/indusagi-cli-adapter.js.map +1 -0
  76. package/dist/runtime/providers/adapters/utils.d.ts +12 -0
  77. package/dist/runtime/providers/adapters/utils.d.ts.map +1 -0
  78. package/dist/runtime/providers/adapters/utils.js +122 -0
  79. package/dist/runtime/providers/adapters/utils.js.map +1 -0
  80. package/dist/runtime/providers/builtins.d.ts +3 -0
  81. package/dist/runtime/providers/builtins.d.ts.map +1 -0
  82. package/dist/runtime/providers/builtins.js +99 -0
  83. package/dist/runtime/providers/builtins.js.map +1 -0
  84. package/dist/runtime/providers/provider-adapter-registry.d.ts +11 -0
  85. package/dist/runtime/providers/provider-adapter-registry.d.ts.map +1 -0
  86. package/dist/runtime/providers/provider-adapter-registry.js +36 -0
  87. package/dist/runtime/providers/provider-adapter-registry.js.map +1 -0
  88. package/dist/runtime/providers/provider-adapter.d.ts +33 -0
  89. package/dist/runtime/providers/provider-adapter.d.ts.map +1 -0
  90. package/dist/runtime/providers/provider-adapter.js +2 -0
  91. package/dist/runtime/providers/provider-adapter.js.map +1 -0
  92. package/dist/runtime/providers/provider-service.d.ts +33 -0
  93. package/dist/runtime/providers/provider-service.d.ts.map +1 -0
  94. package/dist/runtime/providers/provider-service.js +157 -0
  95. package/dist/runtime/providers/provider-service.js.map +1 -0
  96. package/dist/runtime/providers/types.d.ts +29 -0
  97. package/dist/runtime/providers/types.d.ts.map +1 -0
  98. package/dist/runtime/providers/types.js +9 -0
  99. package/dist/runtime/providers/types.js.map +1 -0
  100. package/dist/runtime/sdk.d.ts +6 -0
  101. package/dist/runtime/sdk.d.ts.map +1 -1
  102. package/dist/runtime/sdk.js +55 -8
  103. package/dist/runtime/sdk.js.map +1 -1
  104. package/dist/telemetry/core/types.d.ts +1 -1
  105. package/dist/telemetry/core/types.js +1 -1
  106. package/dist/vendor/observe/adapters/agent-event-adapter.d.ts +28 -0
  107. package/dist/vendor/observe/adapters/agent-event-adapter.d.ts.map +1 -0
  108. package/dist/vendor/observe/adapters/agent-event-adapter.js +136 -0
  109. package/dist/vendor/observe/adapters/agent-event-adapter.js.map +1 -0
  110. package/dist/vendor/observe/adapters/ai-stream-adapter.d.ts +24 -0
  111. package/dist/vendor/observe/adapters/ai-stream-adapter.d.ts.map +1 -0
  112. package/dist/vendor/observe/adapters/ai-stream-adapter.js +118 -0
  113. package/dist/vendor/observe/adapters/ai-stream-adapter.js.map +1 -0
  114. package/dist/vendor/observe/artifacts/content-store.d.ts +12 -0
  115. package/dist/vendor/observe/artifacts/content-store.d.ts.map +1 -0
  116. package/dist/vendor/observe/artifacts/content-store.js +2 -0
  117. package/dist/vendor/observe/artifacts/content-store.js.map +1 -0
  118. package/dist/vendor/observe/artifacts/file-content-store.d.ts +16 -0
  119. package/dist/vendor/observe/artifacts/file-content-store.d.ts.map +1 -0
  120. package/dist/vendor/observe/artifacts/file-content-store.js +43 -0
  121. package/dist/vendor/observe/artifacts/file-content-store.js.map +1 -0
  122. package/dist/vendor/observe/batcher.d.ts +27 -0
  123. package/dist/vendor/observe/batcher.d.ts.map +1 -0
  124. package/dist/vendor/observe/batcher.js +66 -0
  125. package/dist/vendor/observe/batcher.js.map +1 -0
  126. package/dist/vendor/observe/client/artifacts-manager.d.ts +29 -0
  127. package/dist/vendor/observe/client/artifacts-manager.d.ts.map +1 -0
  128. package/dist/vendor/observe/client/artifacts-manager.js +120 -0
  129. package/dist/vendor/observe/client/artifacts-manager.js.map +1 -0
  130. package/dist/vendor/observe/client/datasets-manager.d.ts +16 -0
  131. package/dist/vendor/observe/client/datasets-manager.d.ts.map +1 -0
  132. package/dist/vendor/observe/client/datasets-manager.js +27 -0
  133. package/dist/vendor/observe/client/datasets-manager.js.map +1 -0
  134. package/dist/vendor/observe/client/experiments-manager.d.ts +61 -0
  135. package/dist/vendor/observe/client/experiments-manager.d.ts.map +1 -0
  136. package/dist/vendor/observe/client/experiments-manager.js +132 -0
  137. package/dist/vendor/observe/client/experiments-manager.js.map +1 -0
  138. package/dist/vendor/observe/client/index.d.ts +9 -0
  139. package/dist/vendor/observe/client/index.d.ts.map +1 -0
  140. package/dist/vendor/observe/client/index.js +9 -0
  141. package/dist/vendor/observe/client/index.js.map +1 -0
  142. package/dist/vendor/observe/client/observe-client.d.ts +30 -0
  143. package/dist/vendor/observe/client/observe-client.d.ts.map +1 -0
  144. package/dist/vendor/observe/client/observe-client.js +22 -0
  145. package/dist/vendor/observe/client/observe-client.js.map +1 -0
  146. package/dist/vendor/observe/client/prompts-manager.d.ts +17 -0
  147. package/dist/vendor/observe/client/prompts-manager.d.ts.map +1 -0
  148. package/dist/vendor/observe/client/prompts-manager.js +38 -0
  149. package/dist/vendor/observe/client/prompts-manager.js.map +1 -0
  150. package/dist/vendor/observe/client/scores-manager.d.ts +10 -0
  151. package/dist/vendor/observe/client/scores-manager.d.ts.map +1 -0
  152. package/dist/vendor/observe/client/scores-manager.js +15 -0
  153. package/dist/vendor/observe/client/scores-manager.js.map +1 -0
  154. package/dist/vendor/observe/client/sessions-manager.d.ts +15 -0
  155. package/dist/vendor/observe/client/sessions-manager.d.ts.map +1 -0
  156. package/dist/vendor/observe/client/sessions-manager.js +24 -0
  157. package/dist/vendor/observe/client/sessions-manager.js.map +1 -0
  158. package/dist/vendor/observe/client/traces-manager.d.ts +23 -0
  159. package/dist/vendor/observe/client/traces-manager.d.ts.map +1 -0
  160. package/dist/vendor/observe/client/traces-manager.js +39 -0
  161. package/dist/vendor/observe/client/traces-manager.js.map +1 -0
  162. package/dist/vendor/observe/console-exporter.d.ts +11 -0
  163. package/dist/vendor/observe/console-exporter.d.ts.map +1 -0
  164. package/dist/vendor/observe/console-exporter.js +18 -0
  165. package/dist/vendor/observe/console-exporter.js.map +1 -0
  166. package/dist/vendor/observe/context.d.ts +4 -0
  167. package/dist/vendor/observe/context.d.ts.map +1 -0
  168. package/dist/vendor/observe/context.js +9 -0
  169. package/dist/vendor/observe/context.js.map +1 -0
  170. package/dist/vendor/observe/entities/artifacts.d.ts +46 -0
  171. package/dist/vendor/observe/entities/artifacts.d.ts.map +1 -0
  172. package/dist/vendor/observe/entities/artifacts.js +2 -0
  173. package/dist/vendor/observe/entities/artifacts.js.map +1 -0
  174. package/dist/vendor/observe/entities/datasets.d.ts +37 -0
  175. package/dist/vendor/observe/entities/datasets.d.ts.map +1 -0
  176. package/dist/vendor/observe/entities/datasets.js +2 -0
  177. package/dist/vendor/observe/entities/datasets.js.map +1 -0
  178. package/dist/vendor/observe/entities/experiments.d.ts +66 -0
  179. package/dist/vendor/observe/entities/experiments.d.ts.map +1 -0
  180. package/dist/vendor/observe/entities/experiments.js +2 -0
  181. package/dist/vendor/observe/entities/experiments.js.map +1 -0
  182. package/dist/vendor/observe/entities/index.d.ts +9 -0
  183. package/dist/vendor/observe/entities/index.d.ts.map +1 -0
  184. package/dist/vendor/observe/entities/index.js +9 -0
  185. package/dist/vendor/observe/entities/index.js.map +1 -0
  186. package/dist/vendor/observe/entities/prompts.d.ts +25 -0
  187. package/dist/vendor/observe/entities/prompts.d.ts.map +1 -0
  188. package/dist/vendor/observe/entities/prompts.js +2 -0
  189. package/dist/vendor/observe/entities/prompts.js.map +1 -0
  190. package/dist/vendor/observe/entities/scores.d.ts +28 -0
  191. package/dist/vendor/observe/entities/scores.d.ts.map +1 -0
  192. package/dist/vendor/observe/entities/scores.js +2 -0
  193. package/dist/vendor/observe/entities/scores.js.map +1 -0
  194. package/dist/vendor/observe/entities/sessions.d.ts +36 -0
  195. package/dist/vendor/observe/entities/sessions.d.ts.map +1 -0
  196. package/dist/vendor/observe/entities/sessions.js +2 -0
  197. package/dist/vendor/observe/entities/sessions.js.map +1 -0
  198. package/dist/vendor/observe/entities/shared.d.ts +26 -0
  199. package/dist/vendor/observe/entities/shared.d.ts.map +1 -0
  200. package/dist/vendor/observe/entities/shared.js +2 -0
  201. package/dist/vendor/observe/entities/shared.js.map +1 -0
  202. package/dist/vendor/observe/entities/traces.d.ts +59 -0
  203. package/dist/vendor/observe/entities/traces.d.ts.map +1 -0
  204. package/dist/vendor/observe/entities/traces.js +2 -0
  205. package/dist/vendor/observe/entities/traces.js.map +1 -0
  206. package/dist/vendor/observe/exporter.d.ts +2 -0
  207. package/dist/vendor/observe/exporter.d.ts.map +1 -0
  208. package/dist/vendor/observe/exporter.js +2 -0
  209. package/dist/vendor/observe/exporter.js.map +1 -0
  210. package/dist/vendor/observe/file-exporter.d.ts +16 -0
  211. package/dist/vendor/observe/file-exporter.d.ts.map +1 -0
  212. package/dist/vendor/observe/file-exporter.js +39 -0
  213. package/dist/vendor/observe/file-exporter.js.map +1 -0
  214. package/dist/vendor/observe/global.d.ts +6 -0
  215. package/dist/vendor/observe/global.d.ts.map +1 -0
  216. package/dist/vendor/observe/global.js +17 -0
  217. package/dist/vendor/observe/global.js.map +1 -0
  218. package/dist/vendor/observe/index.d.ts +24 -0
  219. package/dist/vendor/observe/index.d.ts.map +1 -0
  220. package/dist/vendor/observe/index.js +24 -0
  221. package/dist/vendor/observe/index.js.map +1 -0
  222. package/dist/vendor/observe/noop.d.ts +17 -0
  223. package/dist/vendor/observe/noop.d.ts.map +1 -0
  224. package/dist/vendor/observe/noop.js +80 -0
  225. package/dist/vendor/observe/noop.js.map +1 -0
  226. package/dist/vendor/observe/privacy.d.ts +18 -0
  227. package/dist/vendor/observe/privacy.d.ts.map +1 -0
  228. package/dist/vendor/observe/privacy.js +160 -0
  229. package/dist/vendor/observe/privacy.js.map +1 -0
  230. package/dist/vendor/observe/query/simple-query-client.d.ts +11 -0
  231. package/dist/vendor/observe/query/simple-query-client.d.ts.map +1 -0
  232. package/dist/vendor/observe/query/simple-query-client.js +31 -0
  233. package/dist/vendor/observe/query/simple-query-client.js.map +1 -0
  234. package/dist/vendor/observe/replay/session-replay.d.ts +20 -0
  235. package/dist/vendor/observe/replay/session-replay.d.ts.map +1 -0
  236. package/dist/vendor/observe/replay/session-replay.js +180 -0
  237. package/dist/vendor/observe/replay/session-replay.js.map +1 -0
  238. package/dist/vendor/observe/runtime.d.ts +27 -0
  239. package/dist/vendor/observe/runtime.d.ts.map +1 -0
  240. package/dist/vendor/observe/runtime.js +177 -0
  241. package/dist/vendor/observe/runtime.js.map +1 -0
  242. package/dist/vendor/observe/server/dashboard-html.d.ts +6 -0
  243. package/dist/vendor/observe/server/dashboard-html.d.ts.map +1 -0
  244. package/dist/vendor/observe/server/dashboard-html.js +305 -0
  245. package/dist/vendor/observe/server/dashboard-html.js.map +1 -0
  246. package/dist/vendor/observe/server/http-observe-server.d.ts +62 -0
  247. package/dist/vendor/observe/server/http-observe-server.d.ts.map +1 -0
  248. package/dist/vendor/observe/server/http-observe-server.js +418 -0
  249. package/dist/vendor/observe/server/http-observe-server.js.map +1 -0
  250. package/dist/vendor/observe/server/in-memory-observe-server.d.ts +20 -0
  251. package/dist/vendor/observe/server/in-memory-observe-server.d.ts.map +1 -0
  252. package/dist/vendor/observe/server/in-memory-observe-server.js +76 -0
  253. package/dist/vendor/observe/server/in-memory-observe-server.js.map +1 -0
  254. package/dist/vendor/observe/span.d.ts +45 -0
  255. package/dist/vendor/observe/span.d.ts.map +1 -0
  256. package/dist/vendor/observe/span.js +110 -0
  257. package/dist/vendor/observe/span.js.map +1 -0
  258. package/dist/vendor/observe/store/contracts.d.ts +59 -0
  259. package/dist/vendor/observe/store/contracts.d.ts.map +1 -0
  260. package/dist/vendor/observe/store/contracts.js +2 -0
  261. package/dist/vendor/observe/store/contracts.js.map +1 -0
  262. package/dist/vendor/observe/store/file-control-plane-store.d.ts +33 -0
  263. package/dist/vendor/observe/store/file-control-plane-store.d.ts.map +1 -0
  264. package/dist/vendor/observe/store/file-control-plane-store.js +146 -0
  265. package/dist/vendor/observe/store/file-control-plane-store.js.map +1 -0
  266. package/dist/vendor/observe/store/in-memory-control-plane-store.d.ts +84 -0
  267. package/dist/vendor/observe/store/in-memory-control-plane-store.d.ts.map +1 -0
  268. package/dist/vendor/observe/store/in-memory-control-plane-store.js +447 -0
  269. package/dist/vendor/observe/store/in-memory-control-plane-store.js.map +1 -0
  270. package/dist/vendor/observe/store/index.d.ts +4 -0
  271. package/dist/vendor/observe/store/index.d.ts.map +1 -0
  272. package/dist/vendor/observe/store/index.js +4 -0
  273. package/dist/vendor/observe/store/index.js.map +1 -0
  274. package/dist/vendor/observe/types.d.ts +246 -0
  275. package/dist/vendor/observe/types.d.ts.map +1 -0
  276. package/dist/vendor/observe/types.js +152 -0
  277. package/dist/vendor/observe/types.js.map +1 -0
  278. package/dist/vendor/observe/worker/in-memory-observe-worker.d.ts +25 -0
  279. package/dist/vendor/observe/worker/in-memory-observe-worker.d.ts.map +1 -0
  280. package/dist/vendor/observe/worker/in-memory-observe-worker.js +82 -0
  281. package/dist/vendor/observe/worker/in-memory-observe-worker.js.map +1 -0
  282. package/guides/CLAUDE_CODEX_CLI_INTEGRATION_PLAN.md +321 -0
  283. package/guides/{PI_MONO_MIT_REMOVAL_GUIDE.md → INDUSAGI_MONO_MIT_REMOVAL_GUIDE.md} +29 -29
  284. package/guides/INDUSVX_OBSERVE_FULL_INTEGRATION_REPORT.md +543 -0
  285. package/guides/OBSERVE_DEEP_VALIDATION.md +252 -0
  286. package/guides/OBSERVE_LOCAL_TESTING.md +183 -0
  287. package/guides/OPTION3_PROVIDER_ADAPTER_RUNTIME_PLAN.md +370 -0
  288. package/package.json +11 -4
@@ -0,0 +1,333 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { readdir } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import { createAssistantMessage, createAssistantMessageEventStream, getModel, } from "indusagi/ai";
5
+ import { AuthStorage } from "../runtime/auth-storage.js";
6
+ import { ModelRegistry } from "../runtime/model-registry.js";
7
+ import { createAppObserveContext } from "../runtime/observe.js";
8
+ import { createAgentSession } from "../runtime/sdk.js";
9
+ function createTimestamp() {
10
+ return new Date().toISOString().replace(/[:.]/g, "-");
11
+ }
12
+ function createWorkspace(outputRoot) {
13
+ const workspace = join(outputRoot, "workspace");
14
+ mkdirSync(join(workspace, "src"), { recursive: true });
15
+ writeFileSync(join(workspace, "package.json"), JSON.stringify({
16
+ name: "observe-deep-workspace",
17
+ version: "1.0.0",
18
+ type: "module",
19
+ scripts: {
20
+ check: "node src/index.ts",
21
+ },
22
+ }, null, 2));
23
+ writeFileSync(join(workspace, "README.md"), "# Observe Deep Validation Workspace\n\nThis workspace is generated by the deep Observe validation harness.\n");
24
+ writeFileSync(join(workspace, "src", "index.ts"), [
25
+ "export const APP_NAME = \"observe-deep-test\";",
26
+ "export function describeApp(): string {",
27
+ " return `workspace:${APP_NAME}`;",
28
+ "}",
29
+ "",
30
+ ].join("\n"));
31
+ return workspace;
32
+ }
33
+ function createDeepToolStreamFn(model) {
34
+ let turn = 0;
35
+ return async () => {
36
+ const stream = createAssistantMessageEventStream();
37
+ queueMicrotask(() => {
38
+ if (turn === 0) {
39
+ stream.push({
40
+ type: "done",
41
+ reason: "toolUse",
42
+ message: createAssistantMessage({
43
+ api: model.api,
44
+ provider: model.provider,
45
+ model: model.id,
46
+ stopReason: "toolUse",
47
+ content: [
48
+ {
49
+ type: "toolCall",
50
+ id: "read-pkg",
51
+ name: "read",
52
+ arguments: { path: "package.json" },
53
+ },
54
+ {
55
+ type: "toolCall",
56
+ id: "read-src-index",
57
+ name: "read",
58
+ arguments: { path: "src/index.ts" },
59
+ },
60
+ ],
61
+ }),
62
+ });
63
+ }
64
+ else if (turn === 1) {
65
+ stream.push({
66
+ type: "done",
67
+ reason: "toolUse",
68
+ message: createAssistantMessage({
69
+ api: model.api,
70
+ provider: model.provider,
71
+ model: model.id,
72
+ stopReason: "toolUse",
73
+ content: [
74
+ {
75
+ type: "toolCall",
76
+ id: "write-generated-report",
77
+ name: "write",
78
+ arguments: {
79
+ path: "reports/generated-report.md",
80
+ content: "# Generated Report\n\nThis file was created by the deep Observe validation harness.\n",
81
+ },
82
+ },
83
+ {
84
+ type: "toolCall",
85
+ id: "edit-src-index",
86
+ name: "edit",
87
+ arguments: {
88
+ path: "src/index.ts",
89
+ oldText: 'export const APP_NAME = "observe-deep-test";',
90
+ newText: 'export const APP_NAME = "observe-deep-test-updated";',
91
+ },
92
+ },
93
+ ],
94
+ }),
95
+ });
96
+ }
97
+ else {
98
+ stream.push({
99
+ type: "done",
100
+ reason: "stop",
101
+ message: createAssistantMessage({
102
+ api: model.api,
103
+ provider: model.provider,
104
+ model: model.id,
105
+ stopReason: "stop",
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: "Deep validation complete. I inspected the workspace, created a generated report, and updated src/index.ts.",
110
+ },
111
+ ],
112
+ }),
113
+ });
114
+ }
115
+ turn += 1;
116
+ });
117
+ return stream;
118
+ };
119
+ }
120
+ async function fetchJson(url) {
121
+ const response = await fetch(url);
122
+ return response.json();
123
+ }
124
+ async function main() {
125
+ const repoRoot = resolve(process.cwd());
126
+ const timestamp = createTimestamp();
127
+ const outputRoot = join(repoRoot, ".indusagi", "observe-deep", timestamp);
128
+ const agentDir = join(outputRoot, "agent");
129
+ mkdirSync(outputRoot, { recursive: true });
130
+ mkdirSync(agentDir, { recursive: true });
131
+ const workspace = createWorkspace(outputRoot);
132
+ const observe = await createAppObserveContext({ agentDir, cwd: workspace });
133
+ if (!observe) {
134
+ throw new Error("Observe context did not initialize");
135
+ }
136
+ const authStorage = new AuthStorage(agentDir);
137
+ authStorage.setRuntimeApiKey("mock", "mock-api-key");
138
+ const modelRegistry = new ModelRegistry(authStorage, join(agentDir, "models.json"));
139
+ const model = getModel("mock", "mock-default");
140
+ const publishedPrompt = await observe.client.prompts.publish({
141
+ name: `observe-deep-prompt-${timestamp}`,
142
+ version: "v1",
143
+ labels: ["deep", "local"],
144
+ template: "Inspect the workspace, use tools, and improve it.",
145
+ metadata: { workspace },
146
+ });
147
+ const { session } = await createAgentSession({
148
+ cwd: workspace,
149
+ agentDir,
150
+ authStorage,
151
+ modelRegistry,
152
+ model,
153
+ observe,
154
+ });
155
+ const originalSessionFile = session.sessionFile;
156
+ const observedStreamFn = session.agent.streamFn;
157
+ session.agent.streamFn = createDeepToolStreamFn(model);
158
+ await session.prompt("Inspect the generated workspace and apply one useful improvement.");
159
+ await observe.runtime.flush();
160
+ session.agent.streamFn = observedStreamFn;
161
+ await session.prompt("Give a one-line final summary of the workspace state.");
162
+ await session.executeBash("pwd && ls -R", undefined, { excludeFromContext: false });
163
+ const firstUserEntry = session.sessionManager
164
+ .getEntries()
165
+ .find((entry) => entry.type === "message" && entry.message.role === "user");
166
+ if (firstUserEntry) {
167
+ await session.fork(firstUserEntry.id);
168
+ }
169
+ if (originalSessionFile && existsSync(originalSessionFile)) {
170
+ await session.switchSession(originalSessionFile);
171
+ }
172
+ await session.newSession();
173
+ await observe.runtime.trace({
174
+ name: "privacy-probe",
175
+ kind: "custom",
176
+ attributes: { sessionId: session.getSessionId(), probe: true },
177
+ }, async (span) => {
178
+ span.addEvent({
179
+ name: "privacy-probe-event",
180
+ kind: "annotation",
181
+ data: {
182
+ apiKey: "sk-super-secret-123",
183
+ token: "tok-secret-456",
184
+ password: "hunter2",
185
+ nested: { authorization: "Bearer secret-789" },
186
+ },
187
+ });
188
+ span.end({ output: { apiKey: "sk-super-secret-123", status: "probe-complete" } });
189
+ });
190
+ await observe.runtime.flush();
191
+ await observe.controlPlaneStore.flush();
192
+ const traces = await observe.client.traces.list();
193
+ const latestTrace = traces[traces.length - 1];
194
+ if (latestTrace) {
195
+ await observe.client.traces.update(latestTrace.id, {
196
+ promptId: publishedPrompt.id,
197
+ metadata: { validation: "deep", timestamp },
198
+ });
199
+ await observe.client.artifacts.attachExternalText({ kind: "trace", id: latestTrace.id }, "workspace-index-ts", readFileSync(join(workspace, "src", "index.ts"), "utf8"), { key: "workspace-index.ts", tags: ["deep", "workspace"] });
200
+ const dataset = await observe.client.datasets.create({
201
+ name: `observe-deep-dataset-${timestamp}`,
202
+ description: "Deep validation dataset",
203
+ });
204
+ const [datasetItem] = await observe.client.datasets.addItems(dataset.id, [
205
+ {
206
+ name: "workspace-rewrite",
207
+ input: { prompt: "Inspect workspace and improve it" },
208
+ expectedOutput: { fileUpdated: true, reportCreated: true },
209
+ sourceTraceId: latestTrace.id,
210
+ },
211
+ ]);
212
+ const experiment = await observe.client.experiments.create({
213
+ name: `observe-deep-experiment-${timestamp}`,
214
+ datasetId: dataset.id,
215
+ promptId: publishedPrompt.id,
216
+ model: model.id,
217
+ provider: model.provider,
218
+ });
219
+ const run = await observe.client.experiments.startRun({
220
+ experimentId: experiment.id,
221
+ datasetItemId: datasetItem.id,
222
+ traceId: latestTrace.id,
223
+ });
224
+ await observe.client.experiments.finishRun(run.id, {
225
+ traceId: latestTrace.id,
226
+ result: { success: true, traceId: latestTrace.id },
227
+ });
228
+ await observe.client.scores.create({
229
+ target: { kind: "experiment_run", id: run.id },
230
+ key: "deep_validation_pass",
231
+ value: 1,
232
+ source: "system",
233
+ comment: "Deep Observe validation completed successfully",
234
+ });
235
+ }
236
+ await observe.controlPlaneStore.flush();
237
+ await observe.runtime.flush();
238
+ const baseUrl = observe.dashboardUrl?.replace(/\/ui$/, "") ?? "";
239
+ const health = baseUrl ? await fetchJson(`${baseUrl}/health`) : { ok: false };
240
+ const stats = baseUrl ? await fetchJson(`${baseUrl}/stats`) : {};
241
+ const recordsPage = baseUrl ? await fetchJson(`${baseUrl}/records?limit=100`) : { items: [] };
242
+ const tracePage = baseUrl ? await fetchJson(`${baseUrl}/control-plane/traces`) : { items: [] };
243
+ const artifactPage = baseUrl ? await fetchJson(`${baseUrl}/control-plane/artifacts`) : { items: [] };
244
+ const sessionPage = baseUrl ? await fetchJson(`${baseUrl}/control-plane/sessions`) : { items: [] };
245
+ const experimentPage = baseUrl ? await fetchJson(`${baseUrl}/control-plane/experiments`) : { items: [] };
246
+ const runtimeFiles = (await readdir(join(outputRoot, "agent", "observe", "runtime-records")).catch(async () => {
247
+ return readdir(join(agentDir, "observe", "runtime-records"));
248
+ })).map((name) => join(agentDir, "observe", "runtime-records", name));
249
+ const runtimeNdjson = runtimeFiles.map((file) => readFileSync(file, "utf8")).join("\n");
250
+ const controlPlaneRaw = readFileSync(join(agentDir, "observe", "control-plane.json"), "utf8");
251
+ const recordsRaw = JSON.stringify(recordsPage);
252
+ const workspaceIndexTs = readFileSync(join(workspace, "src", "index.ts"), "utf8");
253
+ const generatedReport = readFileSync(join(workspace, "reports", "generated-report.md"), "utf8");
254
+ const artifactFiles = await readdir(join(agentDir, "observe", "artifacts"));
255
+ const forbiddenSecrets = ["sk-super-secret-123", "tok-secret-456", "hunter2", "Bearer secret-789"];
256
+ const runtimeFileRedacted = forbiddenSecrets.every((secret) => !runtimeNdjson.includes(secret));
257
+ const apiResponseRedacted = forbiddenSecrets.every((secret) => !recordsRaw.includes(secret));
258
+ const controlPlaneRedacted = forbiddenSecrets.every((secret) => !controlPlaneRaw.includes(secret));
259
+ const summary = {
260
+ outputRoot,
261
+ workspace,
262
+ dashboardUrl: observe.dashboardUrl,
263
+ health,
264
+ stats,
265
+ recordCount: Array.isArray(recordsPage.items) ? recordsPage.items.length : 0,
266
+ traceCount: Array.isArray(tracePage.items) ? tracePage.items.length : 0,
267
+ sessionCount: Array.isArray(sessionPage.items) ? sessionPage.items.length : 0,
268
+ artifactCount: Array.isArray(artifactPage.items) ? artifactPage.items.length : 0,
269
+ experimentCount: Array.isArray(experimentPage.items) ? experimentPage.items.length : 0,
270
+ files: artifactFiles,
271
+ workspaceSnapshot: {
272
+ indexTs: workspaceIndexTs,
273
+ generatedReport,
274
+ },
275
+ privacy: {
276
+ runtimeFileRedacted,
277
+ apiResponseRedacted,
278
+ controlPlaneRedacted,
279
+ },
280
+ notes: [
281
+ "Deep test exercised package-based indusagi imports backed by local indusvx-screth.",
282
+ "Deep test covered session prompt flow, tool execution, explicit bash execution, fork, switch, new session, artifact creation, datasets, experiments, scores, HTTP endpoints, and privacy redaction.",
283
+ "MCP, TUI overlays, and subagent/task traces were not exercised in this harness.",
284
+ ],
285
+ };
286
+ if (!runtimeFileRedacted || !apiResponseRedacted || !controlPlaneRedacted) {
287
+ throw new Error("Privacy redaction validation failed");
288
+ }
289
+ if (!Array.isArray(tracePage.items) || tracePage.items.length === 0) {
290
+ throw new Error("No control-plane traces found after deep validation");
291
+ }
292
+ if (!Array.isArray(artifactPage.items) || artifactPage.items.length === 0) {
293
+ throw new Error("No control-plane artifacts found after deep validation");
294
+ }
295
+ if (!generatedReport.includes("deep Observe validation harness")) {
296
+ throw new Error("Generated report file content validation failed");
297
+ }
298
+ if (!workspaceIndexTs.includes("observe-deep-test-updated")) {
299
+ throw new Error("Workspace edit validation failed");
300
+ }
301
+ writeFileSync(join(outputRoot, "summary.json"), JSON.stringify(summary, null, 2));
302
+ writeFileSync(join(outputRoot, "report.md"), [
303
+ "# Observe deep validation report",
304
+ "",
305
+ `- Output root: ${outputRoot}`,
306
+ `- Dashboard: ${observe.dashboardUrl ?? "n/a"}`,
307
+ `- Records queried: ${summary.recordCount}`,
308
+ `- Control-plane traces: ${summary.traceCount}`,
309
+ `- Control-plane sessions: ${summary.sessionCount}`,
310
+ `- Control-plane artifacts: ${summary.artifactCount}`,
311
+ `- Control-plane experiments: ${summary.experimentCount}`,
312
+ `- Privacy redaction: runtime=${summary.privacy.runtimeFileRedacted}, api=${summary.privacy.apiResponseRedacted}, control-plane=${summary.privacy.controlPlaneRedacted}`,
313
+ "",
314
+ "## Notes",
315
+ ...summary.notes.map((note) => `- ${note}`),
316
+ ].join("\n"));
317
+ console.log("Observe deep validation completed.");
318
+ console.log(`Output root: ${outputRoot}`);
319
+ console.log(`Dashboard: ${observe.dashboardUrl ?? "n/a"}`);
320
+ console.log(`Summary: ${join(outputRoot, "summary.json")}`);
321
+ console.log(`Report: ${join(outputRoot, "report.md")}`);
322
+ console.log(`Workspace: ${workspace}`);
323
+ console.log(`Health: ${JSON.stringify(health)}`);
324
+ console.log(`Stats: ${JSON.stringify(stats, null, 2)}`);
325
+ console.log(`Counts: ${JSON.stringify({ records: summary.recordCount, traces: summary.traceCount, sessions: summary.sessionCount, artifacts: summary.artifactCount, experiments: summary.experimentCount }, null, 2)}`);
326
+ await observe.shutdown();
327
+ }
328
+ main().catch((error) => {
329
+ console.error("Observe deep validation failed:");
330
+ console.error(error instanceof Error ? error.stack ?? error.message : error);
331
+ process.exit(1);
332
+ });
333
+ //# sourceMappingURL=observe-deep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-deep.js","sourceRoot":"","sources":["../../app/dev/observe-deep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observe-smoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-smoke.d.ts","sourceRoot":"","sources":["../../app/dev/observe-smoke.ts"],"names":[],"mappings":""}
@@ -0,0 +1,264 @@
1
+ import { mkdirSync } from "node:fs";
2
+ import { access } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import { pathToFileURL } from "node:url";
5
+ class ObserveMirrorExporter {
6
+ constructor(queryBackend, controlPlaneStore, sessionId) {
7
+ this.queryBackend = queryBackend;
8
+ this.controlPlaneStore = controlPlaneStore;
9
+ this.sessionId = sessionId;
10
+ }
11
+ async export(batch) {
12
+ await this.queryBackend.appendMany(batch.records);
13
+ for (const record of batch.records) {
14
+ if (record.recordType !== "trace")
15
+ continue;
16
+ await this.controlPlaneStore.traces.ingest({
17
+ sessionId: this.sessionId,
18
+ record,
19
+ });
20
+ }
21
+ }
22
+ }
23
+ function createTimestamp() {
24
+ return new Date().toISOString().replace(/[:.]/g, "-");
25
+ }
26
+ function hasFlag(flag) {
27
+ return process.argv.includes(flag);
28
+ }
29
+ async function ensureFileExists(path) {
30
+ try {
31
+ await access(path);
32
+ }
33
+ catch {
34
+ throw new Error(`Required file not found: ${path}`);
35
+ }
36
+ }
37
+ async function loadBuiltIndusagi(repoRoot) {
38
+ const distRoot = resolve(repoRoot, "dist");
39
+ const agentPath = join(distRoot, "agent.js");
40
+ const aiPath = join(distRoot, "ai.js");
41
+ const observePath = join(distRoot, "observe.js");
42
+ await Promise.all([ensureFileExists(agentPath), ensureFileExists(aiPath), ensureFileExists(observePath)]);
43
+ const [agent, ai, observe] = await Promise.all([
44
+ import(pathToFileURL(agentPath).href),
45
+ import(pathToFileURL(aiPath).href),
46
+ import(pathToFileURL(observePath).href),
47
+ ]);
48
+ return { agent, ai, observe };
49
+ }
50
+ function createSmokeStreamFn(ai, model) {
51
+ const { createAssistantMessageEventStream, createAssistantMessage } = ai;
52
+ let turn = 0;
53
+ return () => {
54
+ const stream = createAssistantMessageEventStream();
55
+ queueMicrotask(() => {
56
+ if (turn === 0) {
57
+ const first = createAssistantMessage({
58
+ api: model.api,
59
+ provider: model.provider,
60
+ model: model.id,
61
+ stopReason: "toolUse",
62
+ content: [
63
+ {
64
+ type: "toolCall",
65
+ id: "read-pkg",
66
+ name: "read",
67
+ arguments: { path: "package.json" },
68
+ },
69
+ {
70
+ type: "toolCall",
71
+ id: "ls-app",
72
+ name: "ls",
73
+ arguments: { path: "app" },
74
+ },
75
+ ],
76
+ });
77
+ stream.push({ type: "done", reason: "toolUse", message: first });
78
+ }
79
+ else {
80
+ const second = createAssistantMessage({
81
+ api: model.api,
82
+ provider: model.provider,
83
+ model: model.id,
84
+ stopReason: "stop",
85
+ content: [
86
+ {
87
+ type: "text",
88
+ text: "Inspected package.json and app/. The repo is a terminal-first coding agent with command-line, runtime, telemetry, and tooling modules.",
89
+ },
90
+ ],
91
+ });
92
+ stream.push({ type: "done", reason: "stop", message: second });
93
+ }
94
+ turn += 1;
95
+ });
96
+ return stream;
97
+ };
98
+ }
99
+ async function main() {
100
+ const repoRoot = resolve(process.cwd());
101
+ const serve = hasFlag("--serve");
102
+ const modules = await loadBuiltIndusagi(repoRoot);
103
+ const { Agent, createReadTool, createLsTool } = modules.agent;
104
+ const { getModel, streamSimple } = modules.ai;
105
+ const { createObserve, FileObserveArtifactContentStore, FileObserveControlPlaneStore, FileObserveExporter, InMemoryObserveServer, ObserveClient, ObserveHttpServer, } = modules.observe;
106
+ const timestamp = createTimestamp();
107
+ const outputRoot = join(repoRoot, ".indusagi", "observe-smoke", timestamp);
108
+ const runtimeOutput = join(outputRoot, "runtime-records");
109
+ const artifactRoot = join(outputRoot, "artifacts");
110
+ const controlPlanePath = join(outputRoot, "control-plane.json");
111
+ mkdirSync(outputRoot, { recursive: true });
112
+ const queryBackend = new InMemoryObserveServer();
113
+ const controlPlaneStore = new FileObserveControlPlaneStore({ path: controlPlanePath });
114
+ const artifactContentStore = new FileObserveArtifactContentStore({ rootDir: artifactRoot });
115
+ const client = new ObserveClient({
116
+ store: controlPlaneStore,
117
+ queryBackend,
118
+ artifactContentStore,
119
+ });
120
+ const session = await client.sessions.create({
121
+ name: "indusagi-screth observe smoke",
122
+ externalSessionId: timestamp,
123
+ metadata: { cwd: repoRoot, mode: serve ? "serve" : "oneshot" },
124
+ });
125
+ const prompt = await client.prompts.publish({
126
+ name: "indusagi-screth-observe-smoke",
127
+ version: "v1",
128
+ labels: ["smoke", "local"],
129
+ template: "Inspect {{target}} and summarize the coding-agent structure.",
130
+ metadata: { target: repoRoot },
131
+ });
132
+ const runtime = createObserve({
133
+ resource: {
134
+ serviceName: "indusagi-screth-smoke",
135
+ environment: "local",
136
+ attributes: { repo: "indusagi-screth", cwd: repoRoot },
137
+ },
138
+ exporters: [
139
+ new FileObserveExporter({ outputPath: runtimeOutput, format: "ndjson" }),
140
+ new ObserveMirrorExporter(queryBackend, controlPlaneStore, session.id),
141
+ ],
142
+ batchSize: 100,
143
+ privacy: {
144
+ maxStringLength: 600,
145
+ omit: {
146
+ outputs: false,
147
+ eventData: false,
148
+ },
149
+ },
150
+ });
151
+ const httpServer = new ObserveHttpServer({
152
+ sink: queryBackend,
153
+ queryBackend,
154
+ controlPlaneStore,
155
+ });
156
+ const address = await httpServer.start();
157
+ const baseUrl = `http://${address.host}:${address.port}/api/observe`;
158
+ const model = getModel("mock", "mock-default");
159
+ const agent = new Agent({
160
+ initialState: { model },
161
+ sessionId: session.id,
162
+ observe: runtime,
163
+ streamFn: createSmokeStreamFn(modules.ai, model),
164
+ });
165
+ agent.setTools([createReadTool(repoRoot), createLsTool(repoRoot)]);
166
+ await agent.prompt("Inspect this indusagi-screth coding-agent repo, use tools if needed, and summarize package.json plus the app directory.");
167
+ const aiStream = streamSimple(model, {
168
+ messages: [
169
+ {
170
+ role: "user",
171
+ content: "Give a one-line smoke-test summary for observability.",
172
+ timestamp: Date.now(),
173
+ },
174
+ ],
175
+ }, {
176
+ observe: { runtime, sessionId: session.id, captureDeltas: true },
177
+ mockText: "Observe smoke summary complete.",
178
+ });
179
+ await aiStream.result();
180
+ await runtime.flush();
181
+ const traceRecords = (await queryBackend.query({ recordTypes: ["trace"], order: "desc", limit: 10 })).items;
182
+ const latestTraceRecord = traceRecords[0];
183
+ if (latestTraceRecord?.recordType === "trace") {
184
+ await client.traces.update(latestTraceRecord.traceId, { promptId: prompt.id, metadata: { smoke: true } });
185
+ }
186
+ const lastAssistant = [...agent.state.messages]
187
+ .reverse()
188
+ .find((message) => message.role === "assistant" && Array.isArray(message.content));
189
+ const assistantText = lastAssistant?.content
190
+ ?.filter((part) => part.type === "text")
191
+ ?.map((part) => part.text)
192
+ ?.join("\n") ?? "";
193
+ if (latestTraceRecord?.recordType === "trace") {
194
+ await client.artifacts.attachExternalText({ kind: "trace", id: latestTraceRecord.traceId }, "assistant-summary", assistantText, { key: "assistant-summary.txt", tags: ["smoke"] });
195
+ const dataset = await client.datasets.create({
196
+ name: `observe-smoke-dataset-${timestamp}`,
197
+ description: "Smoke-test dataset generated from indusagi-screth local run",
198
+ });
199
+ const [item] = await client.datasets.addItems(dataset.id, [
200
+ {
201
+ name: "inspect-package-json",
202
+ input: { prompt: "Inspect package.json and app/" },
203
+ expectedOutput: { summary: true },
204
+ sourceTraceId: latestTraceRecord.traceId,
205
+ },
206
+ ]);
207
+ const experiment = await client.experiments.create({
208
+ name: `observe-smoke-experiment-${timestamp}`,
209
+ datasetId: dataset.id,
210
+ promptId: prompt.id,
211
+ model: model.id,
212
+ provider: model.provider,
213
+ });
214
+ const run = await client.experiments.startRun({
215
+ experimentId: experiment.id,
216
+ datasetItemId: item.id,
217
+ traceId: latestTraceRecord.traceId,
218
+ });
219
+ await client.experiments.finishRun(run.id, {
220
+ traceId: latestTraceRecord.traceId,
221
+ result: { smoke: "ok", records: traceRecords.length },
222
+ });
223
+ await client.scores.create({
224
+ target: { kind: "experiment_run", id: run.id },
225
+ key: "smoke_pass",
226
+ value: 1,
227
+ source: "system",
228
+ comment: "Observe smoke run completed successfully",
229
+ });
230
+ }
231
+ await controlPlaneStore.flush();
232
+ const stats = await queryBackend.stats();
233
+ const traces = await client.traces.list({ sessionId: session.id });
234
+ const artifacts = await client.artifacts.list();
235
+ const experiments = await client.experiments.list();
236
+ const dashboardHealth = await fetch(`${baseUrl}/health`).then((response) => response.json());
237
+ console.log("Observe smoke run completed.");
238
+ console.log(`Repo: ${repoRoot}`);
239
+ console.log(`Output root: ${outputRoot}`);
240
+ console.log(`Runtime records: ${runtimeOutput}`);
241
+ console.log(`Control plane store: ${controlPlanePath}`);
242
+ console.log(`Artifact blobs: ${artifactRoot}`);
243
+ console.log(`Dashboard: ${baseUrl}/ui`);
244
+ console.log(`Health: ${JSON.stringify(dashboardHealth)}`);
245
+ console.log(`Stats: ${JSON.stringify(stats, null, 2)}`);
246
+ console.log(`Control-plane summary: ${JSON.stringify({ sessionId: session.id, traces: traces.length, artifacts: artifacts.length, experiments: experiments.length }, null, 2)}`);
247
+ if (!serve) {
248
+ await httpServer.stop();
249
+ await runtime.shutdown();
250
+ return;
251
+ }
252
+ console.log("Serve mode enabled. Press Ctrl+C to stop the Observe dashboard server.");
253
+ process.on("SIGINT", async () => {
254
+ await httpServer.stop();
255
+ await runtime.shutdown();
256
+ process.exit(0);
257
+ });
258
+ }
259
+ main().catch((error) => {
260
+ console.error("Observe smoke run failed:");
261
+ console.error(error instanceof Error ? error.stack ?? error.message : error);
262
+ process.exit(1);
263
+ });
264
+ //# sourceMappingURL=observe-smoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-smoke.js","sourceRoot":"","sources":["../../app/dev/observe-smoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC,MAAM,qBAAqB;IAC1B,YACkB,YAAiB,EACjB,iBAAsB,EACtB,SAAiB;QAFjB,iBAAY,GAAZ,YAAY,CAAK;QACjB,sBAAiB,GAAjB,iBAAiB,CAAK;QACtB,cAAS,GAAT,SAAS,CAAQ;IAChC,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAyB;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO;gBAAE,SAAS;YAC5C,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM;aACN,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACF,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1G,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;KACvC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAO,EAAE,KAAU;IAC/C,MAAM,EAAE,iCAAiC,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC;IACzE,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,iCAAiC,EAAE,CAAC;QAEnD,cAAc,CAAC,GAAG,EAAE;YACnB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,sBAAsB,CAAC;oBACpC,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,UAAU,EAAE,SAAS;oBACrB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,UAAU;4BACd,IAAI,EAAE,MAAM;4BACZ,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;yBACnC;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,IAAI;4BACV,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;yBAC1B;qBACD;iBACD,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,sBAAsB,CAAC;oBACrC,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,wIAAwI;yBAC9I;qBACD;iBACD,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9D,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9C,MAAM,EACL,aAAa,EACb,+BAA+B,EAC/B,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GACjB,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAChE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAI,4BAA4B,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACvF,MAAM,oBAAoB,GAAG,IAAI,+BAA+B,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAChC,KAAK,EAAE,iBAAiB;QACxB,YAAY;QACZ,oBAAoB;KACpB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,IAAI,EAAE,+BAA+B;QACrC,iBAAiB,EAAE,SAAS;QAC5B,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE;KAC9D,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1B,QAAQ,EAAE,8DAA8D;QACxE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC9B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,aAAa,CAAC;QAC7B,QAAQ,EAAE;YACT,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE;SACtD;QACD,SAAS,EAAE;YACV,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACxE,IAAI,qBAAqB,CAAC,YAAY,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,CAAC;SACtE;QACD,SAAS,EAAE,GAAG;QACd,OAAO,EAAE;YACR,eAAe,EAAE,GAAG;YACpB,IAAI,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;aAChB;SACD;KACD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;QACxC,IAAI,EAAE,YAAY;QAClB,YAAY;QACZ,iBAAiB;KACjB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,cAAc,CAAC;IAErE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACvB,YAAY,EAAE,EAAE,KAAK,EAAE;QACvB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;KAChD,CAAC,CAAC;IACH,KAAK,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,KAAK,CAAC,MAAM,CACjB,yHAAyH,CACzH,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAC5B,KAAK,EACL;QACC,QAAQ,EAAE;YACT;gBACC,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,uDAAuD;gBAChE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB;SACD;KACD,EACD;QACC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAChE,QAAQ,EAAE,iCAAiC;KAC3C,CACD,CAAC;IACF,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAEtB,MAAM,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5G,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,iBAAiB,EAAE,UAAU,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC7C,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,aAAa,EAAE,OAAO;QAC3C,EAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC7C,EAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAEpB,IAAI,iBAAiB,EAAE,UAAU,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,CACxC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,iBAAiB,CAAC,OAAO,EAAE,EAChD,mBAAmB,EACnB,aAAa,EACb,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE,yBAAyB,SAAS,EAAE;YAC1C,WAAW,EAAE,6DAA6D;SAC1E,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE;YACzD;gBACC,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE;gBAClD,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACjC,aAAa,EAAE,iBAAiB,CAAC,OAAO;aACxC;SACD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAClD,IAAI,EAAE,4BAA4B,SAAS,EAAE;YAC7C,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC7C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,aAAa,EAAE,IAAI,CAAC,EAAE;YACtB,OAAO,EAAE,iBAAiB,CAAC,OAAO;SAClC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;YAClC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;YAC9C,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,0CAA0C;SACnD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7F,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,gBAAgB,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,KAAK,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CACV,0BAA0B,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACnK,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IACtF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}