indusagi-coding-agent 0.1.42 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -2
- package/README.md +3 -0
- package/dist/command-line/args.js +1 -1
- package/dist/command-line/args.js.map +1 -1
- package/dist/command-line/login-handler.d.ts.map +1 -1
- package/dist/command-line/login-handler.js +7 -0
- package/dist/command-line/login-handler.js.map +1 -1
- package/dist/dev/observe-deep.d.ts +2 -0
- package/dist/dev/observe-deep.d.ts.map +1 -0
- package/dist/dev/observe-deep.js +333 -0
- package/dist/dev/observe-deep.js.map +1 -0
- package/dist/dev/observe-smoke.d.ts +2 -0
- package/dist/dev/observe-smoke.d.ts.map +1 -0
- package/dist/dev/observe-smoke.js +264 -0
- package/dist/dev/observe-smoke.js.map +1 -0
- package/dist/interfaces/terminal-ui/components/oauth-selector.d.ts.map +1 -1
- package/dist/interfaces/terminal-ui/components/oauth-selector.js +1 -0
- package/dist/interfaces/terminal-ui/components/oauth-selector.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +40 -18
- package/dist/main.js.map +1 -1
- package/dist/observe.d.ts +2 -0
- package/dist/observe.d.ts.map +1 -0
- package/dist/observe.js +2 -0
- package/dist/observe.js.map +1 -0
- package/dist/runtime/agent-session.d.ts +11 -0
- package/dist/runtime/agent-session.d.ts.map +1 -1
- package/dist/runtime/agent-session.js +391 -201
- package/dist/runtime/agent-session.js.map +1 -1
- package/dist/runtime/model-resolver.d.ts.map +1 -1
- package/dist/runtime/model-resolver.js +1 -0
- package/dist/runtime/model-resolver.js.map +1 -1
- package/dist/runtime/observe.d.ts +50 -0
- package/dist/runtime/observe.d.ts.map +1 -0
- package/dist/runtime/observe.js +233 -0
- package/dist/runtime/observe.js.map +1 -0
- package/dist/runtime/sdk.d.ts +2 -0
- package/dist/runtime/sdk.d.ts.map +1 -1
- package/dist/runtime/sdk.js +19 -6
- package/dist/runtime/sdk.js.map +1 -1
- package/dist/vendor/observe/adapters/agent-event-adapter.d.ts +28 -0
- package/dist/vendor/observe/adapters/agent-event-adapter.d.ts.map +1 -0
- package/dist/vendor/observe/adapters/agent-event-adapter.js +136 -0
- package/dist/vendor/observe/adapters/agent-event-adapter.js.map +1 -0
- package/dist/vendor/observe/adapters/ai-stream-adapter.d.ts +24 -0
- package/dist/vendor/observe/adapters/ai-stream-adapter.d.ts.map +1 -0
- package/dist/vendor/observe/adapters/ai-stream-adapter.js +118 -0
- package/dist/vendor/observe/adapters/ai-stream-adapter.js.map +1 -0
- package/dist/vendor/observe/artifacts/content-store.d.ts +12 -0
- package/dist/vendor/observe/artifacts/content-store.d.ts.map +1 -0
- package/dist/vendor/observe/artifacts/content-store.js +2 -0
- package/dist/vendor/observe/artifacts/content-store.js.map +1 -0
- package/dist/vendor/observe/artifacts/file-content-store.d.ts +16 -0
- package/dist/vendor/observe/artifacts/file-content-store.d.ts.map +1 -0
- package/dist/vendor/observe/artifacts/file-content-store.js +43 -0
- package/dist/vendor/observe/artifacts/file-content-store.js.map +1 -0
- package/dist/vendor/observe/batcher.d.ts +27 -0
- package/dist/vendor/observe/batcher.d.ts.map +1 -0
- package/dist/vendor/observe/batcher.js +66 -0
- package/dist/vendor/observe/batcher.js.map +1 -0
- package/dist/vendor/observe/client/artifacts-manager.d.ts +29 -0
- package/dist/vendor/observe/client/artifacts-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/artifacts-manager.js +120 -0
- package/dist/vendor/observe/client/artifacts-manager.js.map +1 -0
- package/dist/vendor/observe/client/datasets-manager.d.ts +16 -0
- package/dist/vendor/observe/client/datasets-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/datasets-manager.js +27 -0
- package/dist/vendor/observe/client/datasets-manager.js.map +1 -0
- package/dist/vendor/observe/client/experiments-manager.d.ts +61 -0
- package/dist/vendor/observe/client/experiments-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/experiments-manager.js +132 -0
- package/dist/vendor/observe/client/experiments-manager.js.map +1 -0
- package/dist/vendor/observe/client/index.d.ts +9 -0
- package/dist/vendor/observe/client/index.d.ts.map +1 -0
- package/dist/vendor/observe/client/index.js +9 -0
- package/dist/vendor/observe/client/index.js.map +1 -0
- package/dist/vendor/observe/client/observe-client.d.ts +30 -0
- package/dist/vendor/observe/client/observe-client.d.ts.map +1 -0
- package/dist/vendor/observe/client/observe-client.js +22 -0
- package/dist/vendor/observe/client/observe-client.js.map +1 -0
- package/dist/vendor/observe/client/prompts-manager.d.ts +17 -0
- package/dist/vendor/observe/client/prompts-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/prompts-manager.js +38 -0
- package/dist/vendor/observe/client/prompts-manager.js.map +1 -0
- package/dist/vendor/observe/client/scores-manager.d.ts +10 -0
- package/dist/vendor/observe/client/scores-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/scores-manager.js +15 -0
- package/dist/vendor/observe/client/scores-manager.js.map +1 -0
- package/dist/vendor/observe/client/sessions-manager.d.ts +15 -0
- package/dist/vendor/observe/client/sessions-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/sessions-manager.js +24 -0
- package/dist/vendor/observe/client/sessions-manager.js.map +1 -0
- package/dist/vendor/observe/client/traces-manager.d.ts +23 -0
- package/dist/vendor/observe/client/traces-manager.d.ts.map +1 -0
- package/dist/vendor/observe/client/traces-manager.js +39 -0
- package/dist/vendor/observe/client/traces-manager.js.map +1 -0
- package/dist/vendor/observe/console-exporter.d.ts +11 -0
- package/dist/vendor/observe/console-exporter.d.ts.map +1 -0
- package/dist/vendor/observe/console-exporter.js +18 -0
- package/dist/vendor/observe/console-exporter.js.map +1 -0
- package/dist/vendor/observe/context.d.ts +4 -0
- package/dist/vendor/observe/context.d.ts.map +1 -0
- package/dist/vendor/observe/context.js +9 -0
- package/dist/vendor/observe/context.js.map +1 -0
- package/dist/vendor/observe/entities/artifacts.d.ts +46 -0
- package/dist/vendor/observe/entities/artifacts.d.ts.map +1 -0
- package/dist/vendor/observe/entities/artifacts.js +2 -0
- package/dist/vendor/observe/entities/artifacts.js.map +1 -0
- package/dist/vendor/observe/entities/datasets.d.ts +37 -0
- package/dist/vendor/observe/entities/datasets.d.ts.map +1 -0
- package/dist/vendor/observe/entities/datasets.js +2 -0
- package/dist/vendor/observe/entities/datasets.js.map +1 -0
- package/dist/vendor/observe/entities/experiments.d.ts +66 -0
- package/dist/vendor/observe/entities/experiments.d.ts.map +1 -0
- package/dist/vendor/observe/entities/experiments.js +2 -0
- package/dist/vendor/observe/entities/experiments.js.map +1 -0
- package/dist/vendor/observe/entities/index.d.ts +9 -0
- package/dist/vendor/observe/entities/index.d.ts.map +1 -0
- package/dist/vendor/observe/entities/index.js +9 -0
- package/dist/vendor/observe/entities/index.js.map +1 -0
- package/dist/vendor/observe/entities/prompts.d.ts +25 -0
- package/dist/vendor/observe/entities/prompts.d.ts.map +1 -0
- package/dist/vendor/observe/entities/prompts.js +2 -0
- package/dist/vendor/observe/entities/prompts.js.map +1 -0
- package/dist/vendor/observe/entities/scores.d.ts +28 -0
- package/dist/vendor/observe/entities/scores.d.ts.map +1 -0
- package/dist/vendor/observe/entities/scores.js +2 -0
- package/dist/vendor/observe/entities/scores.js.map +1 -0
- package/dist/vendor/observe/entities/sessions.d.ts +36 -0
- package/dist/vendor/observe/entities/sessions.d.ts.map +1 -0
- package/dist/vendor/observe/entities/sessions.js +2 -0
- package/dist/vendor/observe/entities/sessions.js.map +1 -0
- package/dist/vendor/observe/entities/shared.d.ts +26 -0
- package/dist/vendor/observe/entities/shared.d.ts.map +1 -0
- package/dist/vendor/observe/entities/shared.js +2 -0
- package/dist/vendor/observe/entities/shared.js.map +1 -0
- package/dist/vendor/observe/entities/traces.d.ts +59 -0
- package/dist/vendor/observe/entities/traces.d.ts.map +1 -0
- package/dist/vendor/observe/entities/traces.js +2 -0
- package/dist/vendor/observe/entities/traces.js.map +1 -0
- package/dist/vendor/observe/exporter.d.ts +2 -0
- package/dist/vendor/observe/exporter.d.ts.map +1 -0
- package/dist/vendor/observe/exporter.js +2 -0
- package/dist/vendor/observe/exporter.js.map +1 -0
- package/dist/vendor/observe/file-exporter.d.ts +16 -0
- package/dist/vendor/observe/file-exporter.d.ts.map +1 -0
- package/dist/vendor/observe/file-exporter.js +39 -0
- package/dist/vendor/observe/file-exporter.js.map +1 -0
- package/dist/vendor/observe/global.d.ts +6 -0
- package/dist/vendor/observe/global.d.ts.map +1 -0
- package/dist/vendor/observe/global.js +17 -0
- package/dist/vendor/observe/global.js.map +1 -0
- package/dist/vendor/observe/index.d.ts +24 -0
- package/dist/vendor/observe/index.d.ts.map +1 -0
- package/dist/vendor/observe/index.js +24 -0
- package/dist/vendor/observe/index.js.map +1 -0
- package/dist/vendor/observe/noop.d.ts +17 -0
- package/dist/vendor/observe/noop.d.ts.map +1 -0
- package/dist/vendor/observe/noop.js +80 -0
- package/dist/vendor/observe/noop.js.map +1 -0
- package/dist/vendor/observe/privacy.d.ts +18 -0
- package/dist/vendor/observe/privacy.d.ts.map +1 -0
- package/dist/vendor/observe/privacy.js +160 -0
- package/dist/vendor/observe/privacy.js.map +1 -0
- package/dist/vendor/observe/query/simple-query-client.d.ts +11 -0
- package/dist/vendor/observe/query/simple-query-client.d.ts.map +1 -0
- package/dist/vendor/observe/query/simple-query-client.js +31 -0
- package/dist/vendor/observe/query/simple-query-client.js.map +1 -0
- package/dist/vendor/observe/replay/session-replay.d.ts +20 -0
- package/dist/vendor/observe/replay/session-replay.d.ts.map +1 -0
- package/dist/vendor/observe/replay/session-replay.js +180 -0
- package/dist/vendor/observe/replay/session-replay.js.map +1 -0
- package/dist/vendor/observe/runtime.d.ts +27 -0
- package/dist/vendor/observe/runtime.d.ts.map +1 -0
- package/dist/vendor/observe/runtime.js +177 -0
- package/dist/vendor/observe/runtime.js.map +1 -0
- package/dist/vendor/observe/server/dashboard-html.d.ts +6 -0
- package/dist/vendor/observe/server/dashboard-html.d.ts.map +1 -0
- package/dist/vendor/observe/server/dashboard-html.js +305 -0
- package/dist/vendor/observe/server/dashboard-html.js.map +1 -0
- package/dist/vendor/observe/server/http-observe-server.d.ts +62 -0
- package/dist/vendor/observe/server/http-observe-server.d.ts.map +1 -0
- package/dist/vendor/observe/server/http-observe-server.js +418 -0
- package/dist/vendor/observe/server/http-observe-server.js.map +1 -0
- package/dist/vendor/observe/server/in-memory-observe-server.d.ts +20 -0
- package/dist/vendor/observe/server/in-memory-observe-server.d.ts.map +1 -0
- package/dist/vendor/observe/server/in-memory-observe-server.js +76 -0
- package/dist/vendor/observe/server/in-memory-observe-server.js.map +1 -0
- package/dist/vendor/observe/span.d.ts +45 -0
- package/dist/vendor/observe/span.d.ts.map +1 -0
- package/dist/vendor/observe/span.js +110 -0
- package/dist/vendor/observe/span.js.map +1 -0
- package/dist/vendor/observe/store/contracts.d.ts +59 -0
- package/dist/vendor/observe/store/contracts.d.ts.map +1 -0
- package/dist/vendor/observe/store/contracts.js +2 -0
- package/dist/vendor/observe/store/contracts.js.map +1 -0
- package/dist/vendor/observe/store/file-control-plane-store.d.ts +33 -0
- package/dist/vendor/observe/store/file-control-plane-store.d.ts.map +1 -0
- package/dist/vendor/observe/store/file-control-plane-store.js +146 -0
- package/dist/vendor/observe/store/file-control-plane-store.js.map +1 -0
- package/dist/vendor/observe/store/in-memory-control-plane-store.d.ts +84 -0
- package/dist/vendor/observe/store/in-memory-control-plane-store.d.ts.map +1 -0
- package/dist/vendor/observe/store/in-memory-control-plane-store.js +447 -0
- package/dist/vendor/observe/store/in-memory-control-plane-store.js.map +1 -0
- package/dist/vendor/observe/store/index.d.ts +4 -0
- package/dist/vendor/observe/store/index.d.ts.map +1 -0
- package/dist/vendor/observe/store/index.js +4 -0
- package/dist/vendor/observe/store/index.js.map +1 -0
- package/dist/vendor/observe/types.d.ts +246 -0
- package/dist/vendor/observe/types.d.ts.map +1 -0
- package/dist/vendor/observe/types.js +152 -0
- package/dist/vendor/observe/types.js.map +1 -0
- package/dist/vendor/observe/worker/in-memory-observe-worker.d.ts +25 -0
- package/dist/vendor/observe/worker/in-memory-observe-worker.d.ts.map +1 -0
- package/dist/vendor/observe/worker/in-memory-observe-worker.js +82 -0
- package/dist/vendor/observe/worker/in-memory-observe-worker.js.map +1 -0
- package/guides/INDUSVX_OBSERVE_FULL_INTEGRATION_REPORT.md +543 -0
- package/guides/OBSERVE_DEEP_VALIDATION.md +252 -0
- package/guides/OBSERVE_LOCAL_TESTING.md +183 -0
- package/package.json +11 -4
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Observe deep validation
|
|
2
|
+
|
|
3
|
+
Date: 2026-03-30
|
|
4
|
+
|
|
5
|
+
This document records the larger end-to-end validation run for package-based Observe integration in `indusagi-screth` using local `../indusvx-screth` behind the `indusagi` package import path.
|
|
6
|
+
|
|
7
|
+
## What was validated
|
|
8
|
+
|
|
9
|
+
The deeper validation used:
|
|
10
|
+
|
|
11
|
+
- local package dependency: `"indusagi": "file:../indusvx-screth"`
|
|
12
|
+
- app-level Observe bootstrap in `app/runtime/observe.ts`
|
|
13
|
+
- runtime wiring through:
|
|
14
|
+
- `app/main.ts`
|
|
15
|
+
- `app/runtime/sdk.ts`
|
|
16
|
+
- `app/runtime/agent-session.ts`
|
|
17
|
+
- a larger harness:
|
|
18
|
+
- `app/dev/observe-deep.ts`
|
|
19
|
+
- npm script:
|
|
20
|
+
- `npm run observe:deep`
|
|
21
|
+
|
|
22
|
+
## Commands run
|
|
23
|
+
|
|
24
|
+
### `indusvx-screth`
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm run build
|
|
28
|
+
npm test
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### `indusagi-screth`
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm run build
|
|
35
|
+
npm test
|
|
36
|
+
npm run observe:deep
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Result summary
|
|
40
|
+
|
|
41
|
+
### Build/test
|
|
42
|
+
|
|
43
|
+
- `indusvx-screth` build: ✅
|
|
44
|
+
- `indusvx-screth` tests: ✅ (`56` files, `92` tests)
|
|
45
|
+
- `indusagi-screth` build: ✅
|
|
46
|
+
- `indusagi-screth` tests: ✅ (`13` files, `781` tests)
|
|
47
|
+
- `indusagi-screth` deep Observe validation: ✅
|
|
48
|
+
|
|
49
|
+
## Deep validation output
|
|
50
|
+
|
|
51
|
+
Output root:
|
|
52
|
+
|
|
53
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/`
|
|
54
|
+
|
|
55
|
+
Key files:
|
|
56
|
+
|
|
57
|
+
- summary JSON:
|
|
58
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/summary.json`
|
|
59
|
+
- harness report:
|
|
60
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/report.md`
|
|
61
|
+
- control plane:
|
|
62
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/agent/observe/control-plane.json`
|
|
63
|
+
- runtime records:
|
|
64
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/agent/observe/runtime-records/*.ndjson`
|
|
65
|
+
- artifact payloads:
|
|
66
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/agent/observe/artifacts/*`
|
|
67
|
+
- generated workspace:
|
|
68
|
+
- `.indusagi/observe-deep/2026-03-30T13-37-06-998Z/workspace/`
|
|
69
|
+
|
|
70
|
+
Dashboard URL during validation:
|
|
71
|
+
|
|
72
|
+
- `http://127.0.0.1:61184/api/observe/ui`
|
|
73
|
+
|
|
74
|
+
## What the deep harness exercised
|
|
75
|
+
|
|
76
|
+
The deeper test covered all of the following in one run:
|
|
77
|
+
|
|
78
|
+
- package-based import resolution through `indusagi/...`
|
|
79
|
+
- Observe bootstrap from app runtime
|
|
80
|
+
- real `createAgentSession(...)` path
|
|
81
|
+
- agent prompt flow
|
|
82
|
+
- multi-turn tool-call execution
|
|
83
|
+
- read tool usage
|
|
84
|
+
- write tool usage
|
|
85
|
+
- edit tool usage
|
|
86
|
+
- explicit `session.executeBash(...)`
|
|
87
|
+
- session fork
|
|
88
|
+
- session switch
|
|
89
|
+
- session new-session flow
|
|
90
|
+
- trace mirroring into control plane
|
|
91
|
+
- artifact persistence
|
|
92
|
+
- dataset creation
|
|
93
|
+
- experiment creation
|
|
94
|
+
- score creation
|
|
95
|
+
- HTTP API validation
|
|
96
|
+
- privacy redaction validation
|
|
97
|
+
|
|
98
|
+
## Observed stats
|
|
99
|
+
|
|
100
|
+
From the deep run summary:
|
|
101
|
+
|
|
102
|
+
- total records: `83`
|
|
103
|
+
- control-plane traces: `7`
|
|
104
|
+
- control-plane sessions: `3`
|
|
105
|
+
- control-plane artifacts: `1`
|
|
106
|
+
- control-plane experiments: `1`
|
|
107
|
+
|
|
108
|
+
By record type:
|
|
109
|
+
|
|
110
|
+
- `entry: 50`
|
|
111
|
+
- `span: 20`
|
|
112
|
+
- `trace: 7`
|
|
113
|
+
- `event: 6`
|
|
114
|
+
|
|
115
|
+
By kind:
|
|
116
|
+
|
|
117
|
+
- `session.entry: 7`
|
|
118
|
+
- `agent.event: 43`
|
|
119
|
+
- `tool_call: 4`
|
|
120
|
+
- `turn: 4`
|
|
121
|
+
- `agent_run: 4`
|
|
122
|
+
- `state: 2`
|
|
123
|
+
- `annotation: 3`
|
|
124
|
+
- `delta: 1`
|
|
125
|
+
- `model_generation: 1`
|
|
126
|
+
- `command_execution: 1`
|
|
127
|
+
- `custom: 10`
|
|
128
|
+
- `session_fork: 1`
|
|
129
|
+
- `session_switch: 2`
|
|
130
|
+
|
|
131
|
+
## Concrete output checks
|
|
132
|
+
|
|
133
|
+
### Workspace mutation checks
|
|
134
|
+
|
|
135
|
+
The deep test verified that tools really changed files.
|
|
136
|
+
|
|
137
|
+
Confirmed:
|
|
138
|
+
|
|
139
|
+
- `workspace/src/index.ts` was edited to:
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
export const APP_NAME = "observe-deep-test-updated";
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- `workspace/reports/generated-report.md` was created and contained:
|
|
146
|
+
|
|
147
|
+
```md
|
|
148
|
+
# Generated Report
|
|
149
|
+
|
|
150
|
+
This file was created by the deep Observe validation harness.
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Control-plane checks
|
|
154
|
+
|
|
155
|
+
Confirmed persisted entities in control plane:
|
|
156
|
+
|
|
157
|
+
- sessions
|
|
158
|
+
- traces
|
|
159
|
+
- artifacts
|
|
160
|
+
- prompts
|
|
161
|
+
- datasets
|
|
162
|
+
- dataset items
|
|
163
|
+
- experiments
|
|
164
|
+
- experiment runs
|
|
165
|
+
- scores
|
|
166
|
+
|
|
167
|
+
### API checks
|
|
168
|
+
|
|
169
|
+
Confirmed these endpoints responded during the run:
|
|
170
|
+
|
|
171
|
+
- `/api/observe/health`
|
|
172
|
+
- `/api/observe/stats`
|
|
173
|
+
- `/api/observe/records`
|
|
174
|
+
- `/api/observe/control-plane/sessions`
|
|
175
|
+
- `/api/observe/control-plane/traces`
|
|
176
|
+
- `/api/observe/control-plane/artifacts`
|
|
177
|
+
- `/api/observe/control-plane/experiments`
|
|
178
|
+
- `/api/observe/ui`
|
|
179
|
+
|
|
180
|
+
## Privacy validation
|
|
181
|
+
|
|
182
|
+
A privacy probe intentionally emitted secret-like values via Observe runtime data:
|
|
183
|
+
|
|
184
|
+
- `apiKey`
|
|
185
|
+
- `token`
|
|
186
|
+
- `password`
|
|
187
|
+
- `authorization`
|
|
188
|
+
|
|
189
|
+
The run verified that raw secrets did **not** appear in:
|
|
190
|
+
|
|
191
|
+
- runtime NDJSON exports
|
|
192
|
+
- Observe API responses
|
|
193
|
+
- control-plane JSON
|
|
194
|
+
|
|
195
|
+
Observed redaction example in runtime output:
|
|
196
|
+
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"apiKey": "[REDACTED]",
|
|
200
|
+
"token": "[REDACTED]",
|
|
201
|
+
"password": "[REDACTED]",
|
|
202
|
+
"nested": {
|
|
203
|
+
"authorization": "[REDACTED]"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## What is working well now
|
|
209
|
+
|
|
210
|
+
The package-based local integration is working well enough to validate that:
|
|
211
|
+
|
|
212
|
+
- `indusagi-screth` can use local `indusvx-screth` through `indusagi/...` imports
|
|
213
|
+
- app-level Observe bootstrap is active
|
|
214
|
+
- runtime traces/spans/events are emitted
|
|
215
|
+
- tool-call spans are emitted
|
|
216
|
+
- model-generation spans are emitted
|
|
217
|
+
- command execution spans are emitted
|
|
218
|
+
- session fork/switch/new traces are emitted
|
|
219
|
+
- control-plane persistence works
|
|
220
|
+
- artifact storage works
|
|
221
|
+
- dashboard/API works
|
|
222
|
+
- privacy redaction works in exported/queryable telemetry
|
|
223
|
+
|
|
224
|
+
## Remaining gaps / not yet covered by this deep harness
|
|
225
|
+
|
|
226
|
+
This run did **not** fully exercise:
|
|
227
|
+
|
|
228
|
+
- MCP connection/request/call flows
|
|
229
|
+
- TUI Observe panel/overlay integration
|
|
230
|
+
- subagent/task trace propagation
|
|
231
|
+
- real networked model providers
|
|
232
|
+
- memory package replacement parity beyond app-level instrumentation hooks
|
|
233
|
+
|
|
234
|
+
## Important caveat found
|
|
235
|
+
|
|
236
|
+
One practical gap still visible in the deep validation output:
|
|
237
|
+
|
|
238
|
+
- session files were still being created under the default global session directory path rather than being fully isolated under the custom deep-test agent directory
|
|
239
|
+
|
|
240
|
+
So Observe itself worked well, but session persistence path ownership/isolation still deserves cleanup if fully self-contained deep-test environments are required.
|
|
241
|
+
|
|
242
|
+
## Overall conclusion
|
|
243
|
+
|
|
244
|
+
This bigger test passed.
|
|
245
|
+
|
|
246
|
+
The current package-based approach is now validated as:
|
|
247
|
+
|
|
248
|
+
- stronger than the original smoke harness
|
|
249
|
+
- capable of producing rich Observe telemetry from the real app runtime path
|
|
250
|
+
- good for local product-level observability validation
|
|
251
|
+
|
|
252
|
+
It is **not yet complete full-product coverage** because MCP, TUI, and subagent paths still need dedicated deep tests.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Observe local testing in `indusagi-screth`
|
|
2
|
+
|
|
3
|
+
This guide shows the most reliable way to test the new clean-room Observe stack from the sibling `indusvx-screth/` package **inside the `indusagi-screth` repo context**.
|
|
4
|
+
|
|
5
|
+
## Why this path
|
|
6
|
+
|
|
7
|
+
A direct full package swap from published `indusagi` to local `indusvx-screth` is not the safest first step because `indusagi-screth` still imports extra surfaces like `indusagi/memory` that are not part of the current `indusvx-screth` exports.
|
|
8
|
+
|
|
9
|
+
So the working approach added here is:
|
|
10
|
+
|
|
11
|
+
1. build the sibling `../indusvx-screth` package locally
|
|
12
|
+
2. run a smoke harness from `indusagi-screth`
|
|
13
|
+
3. dynamically load `../indusvx-screth/dist/{agent,ai,observe}.js`
|
|
14
|
+
4. run a real local agent pass against the `indusagi-screth` repo
|
|
15
|
+
5. persist and expose Observe runtime + control-plane outputs
|
|
16
|
+
|
|
17
|
+
This exercises:
|
|
18
|
+
|
|
19
|
+
- runtime traces/spans/events
|
|
20
|
+
- tool lifecycle spans
|
|
21
|
+
- model generation spans
|
|
22
|
+
- file exporter output
|
|
23
|
+
- file-backed control-plane persistence
|
|
24
|
+
- artifact blob persistence
|
|
25
|
+
- HTTP stats/query/dashboard
|
|
26
|
+
- prompt/dataset/experiment/score smoke objects
|
|
27
|
+
- privacy/redaction pipeline
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
From `indusagi-screth/`:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm run observe:smoke
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
That runs a one-shot smoke test.
|
|
38
|
+
|
|
39
|
+
To keep the dashboard server running for manual inspection:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm run observe:smoke:serve
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## What the smoke harness does
|
|
46
|
+
|
|
47
|
+
The harness lives at:
|
|
48
|
+
|
|
49
|
+
- `app/dev/observe-smoke.ts`
|
|
50
|
+
|
|
51
|
+
It:
|
|
52
|
+
|
|
53
|
+
1. builds and loads local `../indusvx-screth`
|
|
54
|
+
2. creates an Observe runtime with privacy controls enabled
|
|
55
|
+
3. writes runtime records with `FileObserveExporter`
|
|
56
|
+
4. mirrors trace records into a durable `FileObserveControlPlaneStore`
|
|
57
|
+
5. stores artifact blobs with `FileObserveArtifactContentStore`
|
|
58
|
+
6. starts `ObserveHttpServer`
|
|
59
|
+
7. runs a local `Agent` using:
|
|
60
|
+
- mock model
|
|
61
|
+
- Observe runtime
|
|
62
|
+
- real local `read` and `ls` tools
|
|
63
|
+
8. creates smoke prompt/dataset/experiment/score objects linked to the produced trace
|
|
64
|
+
|
|
65
|
+
## Output locations
|
|
66
|
+
|
|
67
|
+
Each run writes into:
|
|
68
|
+
|
|
69
|
+
- `.indusagi/observe-smoke/<timestamp>/`
|
|
70
|
+
|
|
71
|
+
Inside that directory you will see:
|
|
72
|
+
|
|
73
|
+
- `runtime-records/` → exported runtime records
|
|
74
|
+
- `control-plane.json` → durable control-plane snapshot
|
|
75
|
+
- `artifacts/` → external artifact blob files
|
|
76
|
+
|
|
77
|
+
## What to inspect
|
|
78
|
+
|
|
79
|
+
### 1. Runtime records
|
|
80
|
+
|
|
81
|
+
Inspect the NDJSON output under:
|
|
82
|
+
|
|
83
|
+
- `.indusagi/observe-smoke/<timestamp>/runtime-records/`
|
|
84
|
+
|
|
85
|
+
Look for records like:
|
|
86
|
+
|
|
87
|
+
- `recordType: "trace"`
|
|
88
|
+
- `recordType: "span"`
|
|
89
|
+
- `kind: "agent_run"`
|
|
90
|
+
- `kind: "turn"`
|
|
91
|
+
- `kind: "tool_call"`
|
|
92
|
+
- `kind: "model_generation"`
|
|
93
|
+
|
|
94
|
+
### 2. Control-plane snapshot
|
|
95
|
+
|
|
96
|
+
Open:
|
|
97
|
+
|
|
98
|
+
- `.indusagi/observe-smoke/<timestamp>/control-plane.json`
|
|
99
|
+
|
|
100
|
+
Look for:
|
|
101
|
+
|
|
102
|
+
- sessions
|
|
103
|
+
- traces
|
|
104
|
+
- prompts
|
|
105
|
+
- datasets
|
|
106
|
+
- experiments
|
|
107
|
+
- experimentRuns
|
|
108
|
+
- scores
|
|
109
|
+
- artifacts
|
|
110
|
+
|
|
111
|
+
### 3. Dashboard
|
|
112
|
+
|
|
113
|
+
When the harness prints a URL like:
|
|
114
|
+
|
|
115
|
+
- `http://127.0.0.1:4319/api/observe/ui`
|
|
116
|
+
|
|
117
|
+
open it in your browser.
|
|
118
|
+
|
|
119
|
+
You should see:
|
|
120
|
+
|
|
121
|
+
- runtime stats
|
|
122
|
+
- latest traces
|
|
123
|
+
- artifacts
|
|
124
|
+
- API endpoint map
|
|
125
|
+
|
|
126
|
+
### 4. Query endpoints
|
|
127
|
+
|
|
128
|
+
You can also query the server directly:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
curl http://127.0.0.1:4319/api/observe/health
|
|
132
|
+
curl http://127.0.0.1:4319/api/observe/stats
|
|
133
|
+
curl "http://127.0.0.1:4319/api/observe/records?limit=20"
|
|
134
|
+
curl http://127.0.0.1:4319/api/observe/control-plane/traces
|
|
135
|
+
curl http://127.0.0.1:4319/api/observe/control-plane/artifacts
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Adjust the port to whatever the smoke harness prints.
|
|
139
|
+
|
|
140
|
+
## What counts as a pass
|
|
141
|
+
|
|
142
|
+
A good run should produce all of the following:
|
|
143
|
+
|
|
144
|
+
- at least one trace record
|
|
145
|
+
- at least one model generation span
|
|
146
|
+
- at least one tool call span
|
|
147
|
+
- a persisted control-plane trace
|
|
148
|
+
- at least one artifact
|
|
149
|
+
- a working dashboard URL
|
|
150
|
+
- no leaked fake secrets in exported payloads
|
|
151
|
+
|
|
152
|
+
## Manual deep-checks
|
|
153
|
+
|
|
154
|
+
After `npm run observe:smoke:serve`, manually verify:
|
|
155
|
+
|
|
156
|
+
### Tool path
|
|
157
|
+
|
|
158
|
+
The run should show tool activity for:
|
|
159
|
+
|
|
160
|
+
- `read package.json`
|
|
161
|
+
- `ls app`
|
|
162
|
+
|
|
163
|
+
### Privacy path
|
|
164
|
+
|
|
165
|
+
Search the exported NDJSON for raw secrets. The harness enables privacy controls, so sensitive-looking values should be redacted or omitted before export.
|
|
166
|
+
|
|
167
|
+
### Persistence path
|
|
168
|
+
|
|
169
|
+
Stop the process and confirm that:
|
|
170
|
+
|
|
171
|
+
- runtime files remain on disk
|
|
172
|
+
- `control-plane.json` remains readable
|
|
173
|
+
- artifact blob files remain in `artifacts/`
|
|
174
|
+
|
|
175
|
+
## Current limitation
|
|
176
|
+
|
|
177
|
+
This harness tests observability **in the `indusagi-screth` repo context** using the local sibling `indusvx-screth` runtime surfaces, but it does **not** yet replace every `indusagi/*` import across the full `indusagi-screth` app.
|
|
178
|
+
|
|
179
|
+
That is intentional: it gives a working, low-risk validation path first.
|
|
180
|
+
|
|
181
|
+
## Next integration step after smoke success
|
|
182
|
+
|
|
183
|
+
If the smoke harness looks good, the next deeper step is to wire Observe directly into `indusagi-screth/app/runtime/sdk.ts` so the main coding-agent runtime itself passes a real Observe runtime into the created `Agent` instance.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indusagi-coding-agent",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.43",
|
|
4
|
+
"description": "Terminal-first TypeScript coding agent built on the published indusagi package.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -33,7 +33,11 @@
|
|
|
33
33
|
"clean": "shx rm -rf dist",
|
|
34
34
|
"sync:export-vendors": "node tasks/sync-export-vendors.mjs",
|
|
35
35
|
"copy:export-assets": "node tasks/copy-export-assets.mjs",
|
|
36
|
-
"build": "npm run sync:export-vendors && tsc -p tsconfig.build.json && npm run copy:export-assets && shx chmod +x dist/cli.js",
|
|
36
|
+
"build": "npm run build:observe-local && npm run sync:export-vendors && tsc -p tsconfig.build.json && npm run copy:export-assets && shx chmod +x dist/cli.js",
|
|
37
|
+
"build:observe-local": "node -e \"console.log('Using published indusagi@0.12.23')\"",
|
|
38
|
+
"observe:smoke": "npm run build && node dist/dev/observe-smoke.js",
|
|
39
|
+
"observe:smoke:serve": "npm run build && node dist/dev/observe-smoke.js --serve",
|
|
40
|
+
"observe:deep": "npm run build && node dist/dev/observe-deep.js",
|
|
37
41
|
"test": "vitest --run",
|
|
38
42
|
"verify": "npm run build && npm test"
|
|
39
43
|
},
|
|
@@ -48,9 +52,12 @@
|
|
|
48
52
|
"file-type": "^21.1.1",
|
|
49
53
|
"glob": "^11.0.3",
|
|
50
54
|
"highlight.js": "^11.11.1",
|
|
51
|
-
"
|
|
55
|
+
"i": "^0.3.7",
|
|
56
|
+
"indusagi": "^0.12.23",
|
|
57
|
+
"indusagi-coding-agent": "^0.1.42",
|
|
52
58
|
"marked": "^17.0.5",
|
|
53
59
|
"minimatch": "^10.0.3",
|
|
60
|
+
"npm": "^11.12.0",
|
|
54
61
|
"strip-ansi": "^7.1.2",
|
|
55
62
|
"uuid": "^11.1.0"
|
|
56
63
|
},
|