pi-harness-runtime 1.1.396 → 1.1.398
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/AGENTS.md +54 -7
- package/harness/notification-events.ts +6 -6
- package/index.ts +1 -1
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/connection-runtime/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/durable-review/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-sink/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/logging/README.md +41 -6
- package/packages/logging/dist/classification.d.ts +65 -0
- package/packages/logging/dist/classification.d.ts.map +1 -0
- package/packages/logging/dist/classification.js +155 -0
- package/packages/logging/dist/classification.js.map +1 -0
- package/packages/logging/dist/config.d.ts +9 -0
- package/packages/logging/dist/config.d.ts.map +1 -1
- package/packages/logging/dist/config.js +40 -3
- package/packages/logging/dist/config.js.map +1 -1
- package/packages/logging/dist/index.d.ts +9 -1
- package/packages/logging/dist/index.d.ts.map +1 -1
- package/packages/logging/dist/index.js +10 -1
- package/packages/logging/dist/index.js.map +1 -1
- package/packages/logging/dist/ingest/schema.d.ts +60 -0
- package/packages/logging/dist/ingest/schema.d.ts.map +1 -0
- package/packages/logging/dist/ingest/schema.js +245 -0
- package/packages/logging/dist/ingest/schema.js.map +1 -0
- package/packages/logging/dist/installation.d.ts +32 -0
- package/packages/logging/dist/installation.d.ts.map +1 -0
- package/packages/logging/dist/installation.js +64 -0
- package/packages/logging/dist/installation.js.map +1 -0
- package/packages/logging/dist/sensitive-keys.d.ts +12 -0
- package/packages/logging/dist/sensitive-keys.d.ts.map +1 -0
- package/packages/logging/dist/sensitive-keys.js +39 -0
- package/packages/logging/dist/sensitive-keys.js.map +1 -0
- package/packages/logging/dist/server/credentials.d.ts +85 -0
- package/packages/logging/dist/server/credentials.d.ts.map +1 -0
- package/packages/logging/dist/server/credentials.js +147 -0
- package/packages/logging/dist/server/credentials.js.map +1 -0
- package/packages/logging/dist/server/http.d.ts +36 -0
- package/packages/logging/dist/server/http.d.ts.map +1 -0
- package/packages/logging/dist/server/http.js +139 -0
- package/packages/logging/dist/server/http.js.map +1 -0
- package/packages/logging/dist/server/index-store.d.ts +95 -0
- package/packages/logging/dist/server/index-store.d.ts.map +1 -0
- package/packages/logging/dist/server/index-store.js +190 -0
- package/packages/logging/dist/server/index-store.js.map +1 -0
- package/packages/logging/dist/server/index.d.ts +22 -0
- package/packages/logging/dist/server/index.d.ts.map +1 -0
- package/packages/logging/dist/server/index.js +15 -0
- package/packages/logging/dist/server/index.js.map +1 -0
- package/packages/logging/dist/server/keys.d.ts +22 -0
- package/packages/logging/dist/server/keys.d.ts.map +1 -0
- package/packages/logging/dist/server/keys.js +24 -0
- package/packages/logging/dist/server/keys.js.map +1 -0
- package/packages/logging/dist/server/outbox-worker.d.ts +55 -0
- package/packages/logging/dist/server/outbox-worker.d.ts.map +1 -0
- package/packages/logging/dist/server/outbox-worker.js +95 -0
- package/packages/logging/dist/server/outbox-worker.js.map +1 -0
- package/packages/logging/dist/server/outbox.d.ts +112 -0
- package/packages/logging/dist/server/outbox.d.ts.map +1 -0
- package/packages/logging/dist/server/outbox.js +247 -0
- package/packages/logging/dist/server/outbox.js.map +1 -0
- package/packages/logging/dist/server/service.d.ts +83 -0
- package/packages/logging/dist/server/service.d.ts.map +1 -0
- package/packages/logging/dist/server/service.js +144 -0
- package/packages/logging/dist/server/service.js.map +1 -0
- package/packages/logging/dist/shipper.d.ts +20 -4
- package/packages/logging/dist/shipper.d.ts.map +1 -1
- package/packages/logging/dist/shipper.js +31 -5
- package/packages/logging/dist/shipper.js.map +1 -1
- package/packages/logging/dist/singleton.d.ts.map +1 -1
- package/packages/logging/dist/singleton.js +3 -0
- package/packages/logging/dist/singleton.js.map +1 -1
- package/packages/logging/dist/types.d.ts +28 -1
- package/packages/logging/dist/types.d.ts.map +1 -1
- package/packages/logging/dist/types.js +8 -0
- package/packages/logging/dist/types.js.map +1 -1
- package/packages/logging/package.json +1 -1
- package/packages/logging/src/classification.ts +175 -0
- package/packages/logging/src/config.ts +60 -3
- package/packages/logging/src/index.ts +45 -1
- package/packages/logging/src/ingest/schema.ts +295 -0
- package/packages/logging/src/installation.ts +76 -0
- package/packages/logging/src/sensitive-keys.ts +40 -0
- package/packages/logging/src/server/credentials.ts +198 -0
- package/packages/logging/src/server/http.ts +170 -0
- package/packages/logging/src/server/index-store.ts +242 -0
- package/packages/logging/src/server/index.ts +56 -0
- package/packages/logging/src/server/keys.ts +32 -0
- package/packages/logging/src/server/outbox-worker.ts +124 -0
- package/packages/logging/src/server/outbox.ts +316 -0
- package/packages/logging/src/server/service.ts +196 -0
- package/packages/logging/src/shipper.ts +54 -8
- package/packages/logging/src/singleton.ts +3 -0
- package/packages/logging/src/types.ts +29 -1
- package/packages/logging/test/classification.test.ts +137 -0
- package/packages/logging/test/identity-transport.test.ts +197 -0
- package/packages/logging/test/ingest-schema.test.ts +184 -0
- package/packages/logging/test/integration.test.ts +9 -4
- package/packages/logging/test/log-http.test.ts +246 -0
- package/packages/logging/test/server.test.ts +444 -0
- package/packages/logging/test/shipper.test.ts +11 -11
- package/packages/logging/test/spool.test.ts +4 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/dist/adapters/detail-format.d.ts +34 -0
- package/packages/notification/dist/adapters/detail-format.d.ts.map +1 -0
- package/packages/notification/dist/adapters/detail-format.js +55 -0
- package/packages/notification/dist/adapters/detail-format.js.map +1 -0
- package/packages/notification/dist/adapters/email-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/email-adapter.js +3 -2
- package/packages/notification/dist/adapters/email-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/line-adapter.js +3 -2
- package/packages/notification/dist/adapters/line-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/ntfy-adapter.js +3 -2
- package/packages/notification/dist/adapters/ntfy-adapter.js.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +14 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +83 -67
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
- package/packages/notification/dist/notification-center.d.ts.map +1 -1
- package/packages/notification/dist/notification-center.js +1 -0
- package/packages/notification/dist/notification-center.js.map +1 -1
- package/packages/notification/dist/types.d.ts +3 -0
- package/packages/notification/dist/types.d.ts.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/adapters/detail-format.ts +74 -0
- package/packages/notification/src/adapters/email-adapter.ts +3 -2
- package/packages/notification/src/adapters/line-adapter.ts +3 -2
- package/packages/notification/src/adapters/ntfy-adapter.ts +3 -2
- package/packages/notification/src/adapters/telegram-adapter.ts +92 -74
- package/packages/notification/src/notification-center.ts +1 -0
- package/packages/notification/src/types.ts +3 -0
- package/packages/notification/test/detail-format.test.ts +106 -0
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/permission-mode/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/relay/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/voice-api/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/wiki/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
- package/scripts/unified-webhook-server.ts +86 -81
package/AGENTS.md
CHANGED
|
@@ -648,20 +648,41 @@ Production detection ≠ deployment authorization
|
|
|
648
648
|
|
|
649
649
|
## Centralized Application Logging
|
|
650
650
|
|
|
651
|
-
All application logs can be shipped to **
|
|
652
|
-
|
|
653
|
-
(`@pi-harness/logging`); the harness uses the
|
|
651
|
+
All application logs can be shipped to the **unified webhook server** (ingest path),
|
|
652
|
+
which is the only component that writes to **Cloudflare R2** (durable archive). The
|
|
653
|
+
pipeline lives in `packages/logging` (`@pi-harness/logging`); the harness uses the
|
|
654
|
+
process-wide singleton from it.
|
|
654
655
|
|
|
655
|
-
**
|
|
656
|
+
**Client side** (first success wins, the rest are skipped - a fallback chain, never
|
|
657
|
+
a broadcast):
|
|
656
658
|
|
|
657
659
|
```text
|
|
658
|
-
producer -> redact -> sample -> buffer ->
|
|
660
|
+
producer -> classify -> redact -> sample -> buffer -> webhook -> local spool (~/.pi-harness-runtime/logs/spool)
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
**Server side** (durable hand-off, then an independent upload):
|
|
664
|
+
|
|
665
|
+
```text
|
|
666
|
+
POST /api/logs -> authenticate -> validate -> durable outbox -> 202
|
|
667
|
+
|
|
|
668
|
+
v
|
|
669
|
+
worker -> R2 -> done
|
|
659
670
|
```
|
|
660
671
|
|
|
661
672
|
- The local spool is the fallback: if every transport fails the batch is written to
|
|
662
673
|
disk as NDJSON and re-shipped on the next successful flush. Nothing is lost, only delayed.
|
|
663
674
|
- The local log files (`~/.pi-harness-runtime/logs/*.jsonl`, `harness/*.log`) stay the
|
|
664
675
|
source of truth. The centralized pipeline is a copy for the archive.
|
|
676
|
+
- **Only the server writes to R2.** In `auto` mode the webhook is preferred when
|
|
677
|
+
`PI_LOG_WEBHOOK_URL` is set, so client machines need no R2 credentials.
|
|
678
|
+
|
|
679
|
+
**What may leave the machine** (`classify`): an event allowlist decides, not a
|
|
680
|
+
denylist. Structured service/session/validation events are remote; the catch-all
|
|
681
|
+
`harness.log` mirror of a local log line, prompts, responses and command output stay
|
|
682
|
+
local. A message only travels when it looks sanitized (one line, short, no path, no
|
|
683
|
+
URL with a query string), and fields with a private key name (`prompt`, `output`,
|
|
684
|
+
`path`, `url`, `user`, ...) are dropped. `PI_LOG_DIAGNOSTIC=1` relaxes the message rule
|
|
685
|
+
for a user who explicitly asked for more - it never widens the event allowlist.
|
|
665
686
|
|
|
666
687
|
**Configuration** (environment first, then `~/.pi-harness-runtime/keys/`):
|
|
667
688
|
|
|
@@ -676,6 +697,9 @@ producer -> redact -> sample -> buffer -> R2 -> webhook -> local spool (~/.pi-ha
|
|
|
676
697
|
| `PI_LOG_FLUSH_INTERVAL_MS` | Automatic flush interval | `15000` |
|
|
677
698
|
| `PI_LOG_WEBHOOK_URL` | Ingest URL of the webhook server | unset |
|
|
678
699
|
| `PI_LOG_WEBHOOK_TOKEN` | Bearer token for the ingest endpoint | unset |
|
|
700
|
+
| `PI_LOG_APP_VERSION` | Version reported with every batch | unset |
|
|
701
|
+
| `PI_LOG_INSTALLATION_ID` | Stable id of this installation | generated once |
|
|
702
|
+
| `PI_LOG_DIAGNOSTIC` | `1` allows raw messages (events stay allowlisted) | unset |
|
|
679
703
|
| `PI_LOG_R2_BUCKET` / `PI_LOG_R2_ENDPOINT` / `PI_LOG_R2_ACCESS_KEY_ID` / `PI_LOG_R2_SECRET_ACCESS_KEY` | R2 credentials | key files |
|
|
680
704
|
| `PI_LOG_SPOOL_DIR` | Local spool directory | `~/.pi-harness-runtime/logs/spool` |
|
|
681
705
|
|
|
@@ -686,9 +710,32 @@ R2 credentials are read from the key files `r2-bucket-name.txt`, `r2-endpoint.tx
|
|
|
686
710
|
|
|
687
711
|
- Emit through the singleton: `centralInfo/centralWarn/centralError(source, event, message?, fields?)`.
|
|
688
712
|
The `source` identifies the component, the `event` is a dotted name.
|
|
713
|
+
- The event name decides whether a record may leave the machine. Use one of the
|
|
714
|
+
allowlisted shapes (`service.*`, `session.*`, `validation.*`, `harness.service-diagnostics.*`,
|
|
715
|
+
`harness.planner.decision`, `harness.glm-quota.quota`, ...) or a `warn`/`error` level.
|
|
716
|
+
An unknown event stays local.
|
|
689
717
|
- Redaction is automatic (key names, credential patterns, truncation), but producers must
|
|
690
718
|
not pass user content: prompts, raw model output and message bodies are dropped by the
|
|
691
719
|
redactor, so shipping them is pointless.
|
|
692
720
|
- Never put a credential in a log message. The redactor is a safety net, not a licence.
|
|
693
|
-
-
|
|
694
|
-
|
|
721
|
+
- Prefer a structured event over mirroring a local log line. The `logToFile()` mirror
|
|
722
|
+
(`harness.log`) stays local on purpose - the local file is the source of truth.
|
|
723
|
+
|
|
724
|
+
**Server endpoints** (all require an ingest credential):
|
|
725
|
+
|
|
726
|
+
| Route | Method | Purpose |
|
|
727
|
+
|-------|--------|---------|
|
|
728
|
+
| `/api/logs` | POST | Accept a batch. `202` only after the durable write, `503` when the endpoint is not configured or the queue is unavailable (the client keeps its spool). |
|
|
729
|
+
| `/api/logs/query` | POST | Read-only, tenant-scoped metadata query (installation, session, time range, level, source, event). Bounded and paginated; never returns message text. |
|
|
730
|
+
| `/api/logs/health` | GET | Queue depth, oldest pending age, failure count, last error. |
|
|
731
|
+
|
|
732
|
+
**Ingest credentials** (server side):
|
|
733
|
+
|
|
734
|
+
- The endpoint **fails closed**: without a credential every write is refused with `503`.
|
|
735
|
+
- `LOG_INGEST_TOKEN` (or `keys/log-ingest-token.txt`) is a shared token for a
|
|
736
|
+
single-tenant deployment; `LOG_INGEST_TENANT` names its tenant.
|
|
737
|
+
- `keys/log-ingest-credentials.json` holds scoped credentials, one per installation:
|
|
738
|
+
`{ "id", "tenantId", "label", "scopes", "tokenHash", "createdAt", "revokedAt" }`.
|
|
739
|
+
Tokens are stored as SHA-256 hashes; the tenant is derived from the credential and
|
|
740
|
+
never from the request body.
|
|
741
|
+
- Rotate by adding an entry and revoking the old one (`revokedAt`).
|
|
@@ -105,7 +105,7 @@ export class HarnessNotificationEvents {
|
|
|
105
105
|
*/
|
|
106
106
|
async emitQuotaPaused(resumeAt?: string): Promise<void> {
|
|
107
107
|
await this.emit("QuotaPaused", {
|
|
108
|
-
|
|
108
|
+
reason: resumeAt ? `Resumes at ${resumeAt}` : undefined,
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
|
|
@@ -113,7 +113,7 @@ export class HarnessNotificationEvents {
|
|
|
113
113
|
* Emit ResumeScheduled event
|
|
114
114
|
*/
|
|
115
115
|
async emitResumeScheduled(resumeAt: string): Promise<void> {
|
|
116
|
-
await this.emit("ResumeScheduled", {
|
|
116
|
+
await this.emit("ResumeScheduled", { reason: resumeAt });
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/**
|
|
@@ -121,7 +121,7 @@ export class HarnessNotificationEvents {
|
|
|
121
121
|
*/
|
|
122
122
|
async emitContextCompacted(tokensCompacted?: number): Promise<void> {
|
|
123
123
|
await this.emit("ContextCompacted", {
|
|
124
|
-
|
|
124
|
+
reason: tokensCompacted
|
|
125
125
|
? `Compacted ${tokensCompacted.toLocaleString()} tokens`
|
|
126
126
|
: undefined,
|
|
127
127
|
});
|
|
@@ -132,7 +132,7 @@ export class HarnessNotificationEvents {
|
|
|
132
132
|
*/
|
|
133
133
|
async emitOutputLimitContinued(attempt: number): Promise<void> {
|
|
134
134
|
await this.emit("OutputLimitContinued", {
|
|
135
|
-
|
|
135
|
+
reason: `Attempt ${attempt}`,
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -149,7 +149,7 @@ export class HarnessNotificationEvents {
|
|
|
149
149
|
* Emit HumanReviewNeeded event
|
|
150
150
|
*/
|
|
151
151
|
async emitHumanReviewNeeded(taskId: string, reason: string): Promise<void> {
|
|
152
|
-
await this.emit("HumanReviewNeeded", { taskId,
|
|
152
|
+
await this.emit("HumanReviewNeeded", { taskId, reason });
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
/**
|
|
@@ -163,7 +163,7 @@ export class HarnessNotificationEvents {
|
|
|
163
163
|
* Emit JobCancelled event
|
|
164
164
|
*/
|
|
165
165
|
async emitJobCancelled(reason?: string): Promise<void> {
|
|
166
|
-
await this.emit("JobCancelled", {
|
|
166
|
+
await this.emit("JobCancelled", { reason });
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
/**
|
package/index.ts
CHANGED
|
@@ -5610,7 +5610,7 @@ Run \`bd ready\` to see current bd issues.
|
|
|
5610
5610
|
pi.sendUserMessage(content, { deliverAs });
|
|
5611
5611
|
await nc("ResumeScheduled", {
|
|
5612
5612
|
requirement: "Session auto-resume",
|
|
5613
|
-
|
|
5613
|
+
reason,
|
|
5614
5614
|
});
|
|
5615
5615
|
} catch (error) {
|
|
5616
5616
|
logToFile(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/capability-registry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.398",
|
|
4
4
|
"description": "Capability Registry for pi-harness-runtime — tracks model capabilities and enables capability-based routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|