workspai 0.76.0 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/contracts/create-planner-capabilities.v1.json +50 -2
- package/contracts/runtime-command-surface.v1.json +5 -1
- package/contracts/workspace-intelligence/workspace-model.v1.json +4 -0
- package/contracts/workspace-intelligence-architecture.v1.json +5 -1
- package/dist/analyze-X76YV667.js +1 -0
- package/dist/autopilot-release-6OV2FLRS.js +1 -0
- package/dist/capabilities-command-TIBIKWPK.js +1 -0
- package/dist/{chunk-RKFTUIZ4.js → chunk-2CUT4GLE.js} +1 -1
- package/dist/chunk-3PGXGAHC.js +2 -0
- package/dist/{chunk-AGI46TSQ.js → chunk-4AAXIWYY.js} +1 -1
- package/dist/{chunk-FBF767WP.js → chunk-4KAYWMNE.js} +1 -1
- package/dist/chunk-4ZUBPFSO.js +6 -0
- package/dist/{chunk-2I2A55RE.js → chunk-5FVREPQC.js} +1 -1
- package/dist/{chunk-KO4DM2AV.js → chunk-5OKNWBAN.js} +1 -1
- package/dist/{chunk-4MXKXHLW.js → chunk-75WJOYWT.js} +1 -1
- package/dist/{chunk-H4YHIOCT.js → chunk-7EMG3C3H.js} +3 -3
- package/dist/{chunk-TJ3MDZMC.js → chunk-7HV4U2OV.js} +1 -1
- package/dist/{chunk-TFFNHWXY.js → chunk-AMGIXK6Z.js} +1 -1
- package/dist/{chunk-QIPW3G2H.js → chunk-FLAGHVSH.js} +1 -1
- package/dist/chunk-HB3ZYG2Z.js +4737 -0
- package/dist/{chunk-IKNWNGLY.js → chunk-HMWZWT7B.js} +1 -1
- package/dist/{chunk-PUH3TSPC.js → chunk-IQJL3LBM.js} +1 -1
- package/dist/{chunk-HRGIHWYH.js → chunk-KRTVIBPC.js} +1 -1
- package/dist/chunk-MD4CHXV3.js +2 -0
- package/dist/{chunk-4BBFEHPL.js → chunk-MN5S462C.js} +1 -1
- package/dist/{chunk-X7MDTBX5.js → chunk-ONUFNCRN.js} +1 -1
- package/dist/chunk-QDM6TWFK.js +1 -0
- package/dist/chunk-QLHRGWUW.js +10 -0
- package/dist/{chunk-Z2M2XCIB.js → chunk-QMNJTI65.js} +1 -1
- package/dist/{chunk-23CNBYIW.js → chunk-RHF2IZOW.js} +1 -1
- package/dist/{chunk-UOTOJJI4.js → chunk-RJESUJQF.js} +5 -5
- package/dist/chunk-RQXZF7BZ.js +1 -0
- package/dist/{chunk-FD2ZGGCQ.js → chunk-TJRVWVAZ.js} +1 -1
- package/dist/{chunk-KW35SWG6.js → chunk-UVIBPWOG.js} +2 -2
- package/dist/{chunk-BZLDCASY.js → chunk-VEMGICT4.js} +1 -1
- package/dist/{chunk-PSQPKK6H.js → chunk-VRZAN3WS.js} +62 -62
- package/dist/{chunk-L6VNI4DN.js → chunk-YHQK4S3H.js} +1 -1
- package/dist/{chunk-ZXQC36NJ.js → chunk-YWC5MKIL.js} +1 -1
- package/dist/{chunk-R3Z4LY3O.js → chunk-ZQ36CTLF.js} +1 -1
- package/dist/{create-ZRUQ3KNZ.js → create-WB5YQ7C6.js} +1 -1
- package/dist/{doctor-7V7LJLHX.js → doctor-HOSHQ7II.js} +1 -1
- package/dist/{goal-lifecycle-EM4DUJCR.js → goal-lifecycle-UEJMTUFV.js} +1 -1
- package/dist/{goal-pack-YMWZHAH6.js → goal-pack-YGZMG3RQ.js} +1 -1
- package/dist/index.js +261 -251
- package/dist/{pipeline-6MBH3MU2.js → pipeline-Z4JOJ4PX.js} +1 -1
- package/dist/{project-agent-entry-ZXAE2MAJ.js → project-agent-entry-ZMDQWJ6I.js} +1 -1
- package/dist/{project-intelligence-lens-NBTPOK2R.js → project-intelligence-lens-FSWQKY3E.js} +1 -1
- package/dist/{project-test-coverage-HOZC72EK.js → project-test-coverage-EJ3MBSZ3.js} +1 -1
- package/dist/{proof-carrying-change-WJFAKK3C.js → proof-carrying-change-M2RNYQ7E.js} +1 -1
- package/dist/{verified-goal-B7EX2PBE.js → verified-goal-UAUCEDZZ.js} +1 -1
- package/dist/{workspace-EBPYCSEM.js → workspace-J5QYWAE3.js} +1 -1
- package/dist/{workspace-agent-sync-Y4F6FBBC.js → workspace-agent-sync-GLG36KQZ.js} +1 -1
- package/dist/{workspace-context-Y7F7GJCQ.js → workspace-context-BZV4ZFKZ.js} +1 -1
- package/dist/{workspace-contract-XJMWMVQE.js → workspace-contract-XDNIB5JX.js} +1 -1
- package/dist/{workspace-explain-T2J5ZLY7.js → workspace-explain-V3XDMONQ.js} +1 -1
- package/dist/{workspace-foundation-2UP6IMTH.js → workspace-foundation-EDTKW2RB.js} +1 -1
- package/dist/{workspace-graph-stream-MZVL3OCX.js → workspace-graph-stream-UPASFCAF.js} +1 -1
- package/dist/{workspace-intelligence-FZRQIFFM.js → workspace-intelligence-24MZRG2S.js} +1 -1
- package/dist/{workspace-intelligence-runner-IXT62JG7.js → workspace-intelligence-runner-HISKHQLG.js} +1 -1
- package/dist/{workspace-knowledge-graph-EFC4TUDZ.js → workspace-knowledge-graph-5EECTGXQ.js} +1 -1
- package/dist/workspace-knowledge-graph-snapshot-T6ZJGWLC.js +1 -0
- package/dist/{workspace-mcp-serve-C42UUU7W.js → workspace-mcp-serve-S3TWO4RI.js} +1 -1
- package/dist/{workspace-model-72SJ6WXT.js → workspace-model-J757KSDE.js} +1 -1
- package/dist/{workspace-onboarding-TFDAIHTS.js → workspace-onboarding-3TLME4HP.js} +1 -1
- package/dist/{workspace-registry-summary-ZNTXSUI4.js → workspace-registry-summary-ZC5CFZXP.js} +1 -1
- package/dist/{workspace-repair-engine-542TAL3Z.js → workspace-repair-engine-C26C7OIB.js} +1 -1
- package/dist/workspace-run-2KBTMGG7.js +1 -0
- package/dist/{workspace-verify-UXKENOQU.js → workspace-verify-KFBWQ37C.js} +1 -1
- package/dist/{workspace-watch-DV5AHLOK.js → workspace-watch-LNP5JPD4.js} +1 -1
- package/docs/README.md +2 -0
- package/docs/agent-framework-adapters.md +72 -18
- package/docs/ci-workflows.md +20 -6
- package/docs/commands-reference.md +7 -2
- package/docs/create-planner-capabilities.md +1 -0
- package/docs/creating-workspaces-and-projects.md +26 -7
- package/docs/doctor-command.md +8 -3
- package/docs/model-gateways.md +204 -0
- package/docs/native-kit-baselines.md +4 -3
- package/package.json +6 -1
- package/scripts/enterprise-package-smoke.mjs +152 -0
- package/dist/analyze-QVRVJB7I.js +0 -1
- package/dist/autopilot-release-DOGIETAT.js +0 -1
- package/dist/capabilities-command-FYBUVHZ7.js +0 -1
- package/dist/chunk-4R44E7HN.js +0 -6
- package/dist/chunk-5S6IZ6PY.js +0 -2
- package/dist/chunk-NSC4VWV2.js +0 -1
- package/dist/chunk-QFDTKOYS.js +0 -2649
- package/dist/chunk-QVFIR64T.js +0 -10
- package/dist/chunk-VODNLROY.js +0 -1
- package/dist/chunk-YLLCZMKP.js +0 -2
- package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +0 -1
- package/dist/workspace-run-NAPJYNSZ.js +0 -1
|
@@ -27,6 +27,10 @@ complete cross-platform matrix is reviewed into that inventory. Public
|
|
|
27
27
|
commands fail closed rather than silently substituting Microsoft, OpenAI, or
|
|
28
28
|
another runtime.
|
|
29
29
|
|
|
30
|
+
OpenRouter Client SDK access belongs to the [AI Gateway](./model-gateways.md)
|
|
31
|
+
category. Do not add OpenRouter under Agent Frameworks, and do not use
|
|
32
|
+
`@openrouter/agent` to implement a gateway kit.
|
|
33
|
+
|
|
30
34
|
## Published contracts
|
|
31
35
|
|
|
32
36
|
| Contract | Purpose |
|
|
@@ -234,15 +238,63 @@ remains blocked until the exact v2 cross-platform candidate is promoted.
|
|
|
234
238
|
Handoffs, MCP, sessions, voice, sandbox, and approval loops stay unsupported.
|
|
235
239
|
Microsoft adapters remain `preview`.
|
|
236
240
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
## Google Agent Development Kit baseline
|
|
242
|
+
|
|
243
|
+
Google ADK is an agent runtime and orchestration framework. It is not an AI
|
|
244
|
+
Gateway, not OpenRouter, and not a Gemini/Vertex model-provider product.
|
|
245
|
+
Provider profiles in the generated starter are `gemini-api` (Gemini Developer
|
|
246
|
+
API) and `vertex-ai`. OpenRouter stays in the separate Gateway category.
|
|
247
|
+
|
|
248
|
+
Python `google-adk` and TypeScript `@google/adk` are independent runtimes.
|
|
249
|
+
Exact pins live in `src/agent-frameworks/version-baselines.v1.json`. Discovery
|
|
250
|
+
must re-prove registry and GitHub agreement on the day it runs; TypeScript 2.0
|
|
251
|
+
graph Workflow Runtime is not generalized to Python.
|
|
252
|
+
|
|
253
|
+
| Adapter | Runtime | Authored detection |
|
|
254
|
+
| ----------------------- | ----------------- | ----------------------------- |
|
|
255
|
+
| `google-adk-python` | Python `>=3.10` | exact PyPI package `google-adk` |
|
|
256
|
+
| `google-adk-typescript` | Node.js `>=20.19` | exact npm package `@google/adk` |
|
|
257
|
+
|
|
258
|
+
The TypeScript starter also pins `zod`, TypeScript, and `@types/node` from the
|
|
259
|
+
same baseline document. `@google/adk-devtools` is not a v1 dependency. Do not
|
|
260
|
+
run unqualified `npx adk`.
|
|
261
|
+
|
|
262
|
+
Adapters are labeled `preview`. Create kits are `agent.google-adk.python` and
|
|
263
|
+
`agent.google-adk.typescript`. The reviewed v2 inventory admits both exact
|
|
264
|
+
baselines from Linux, macOS, and Windows evidence, so Create and Attach are
|
|
265
|
+
enabled. The generic admission boundary still refuses any unpublished or
|
|
266
|
+
drifted kit before `--dry-run` and before filesystem or workspace mutation.
|
|
267
|
+
Streaming emits `event.partial` fragments as
|
|
268
|
+
display deltas. The SDK-recognized final response is retained as canonical text
|
|
269
|
+
and is not re-emitted after streamed fragments. Intermediate metadata does not
|
|
270
|
+
close the fragment window; tool-call and function-response events do. Telemetry
|
|
271
|
+
stays off unless `WORKSPAI_AGENT_TRACING=1` is set from process startup;
|
|
272
|
+
otherwise the starter sets `OTEL_SDK_DISABLED=true` before importing ADK. That
|
|
273
|
+
env var is process-global, so the generated starter is an isolated CLI process
|
|
274
|
+
and must not be imported into a host that still needs OpenTelemetry.
|
|
275
|
+
Credentialless conformance observes a non-recording span in a process without
|
|
276
|
+
opt-in and a recording span in a separate opted-in process with a test
|
|
277
|
+
TracerProvider. Context loaders live
|
|
278
|
+
in `src/agent-frameworks/context-loaders/` and are shared by Google, OpenAI, and
|
|
279
|
+
Microsoft adapters. Sequential, parallel, loop, graph workflow, A2A, MCP, Agent Engine,
|
|
280
|
+
Cloud Run, GKE, Google Search, voice, browser agents, and remote agents are
|
|
281
|
+
unsupported. In-memory sessions are process-local, not durable persistence.
|
|
282
|
+
|
|
283
|
+
Credentialless conformance subclasses the public `BaseLlm` surface. It does not
|
|
284
|
+
monkey-patch private SDK internals and does not call Gemini or Vertex.
|
|
285
|
+
|
|
286
|
+
A path-filtered PR gate compiles only the affected Microsoft, OpenAI, or Google
|
|
287
|
+
adapter family on Linux. Shared lifecycle, security, registry, admission,
|
|
288
|
+
Create/Doctor integration, and contract changes select the affected families;
|
|
289
|
+
documentation-only edits do not run adapter conformance. The complete matrix is
|
|
290
|
+
an explicit release-qualification operation: it compiles every built-in adapter runtime on Linux,
|
|
291
|
+
macOS, and Windows. Every full-qualification lane
|
|
243
292
|
records all 18 mandatory checks, the exact runtime and framework baseline,
|
|
244
293
|
digests of the adapter manifest and semantic implementation, and one bounded
|
|
245
|
-
evidence file per check.
|
|
294
|
+
evidence file per check. Google ADK `verification-binding` evidence records
|
|
295
|
+
`streamingPartialSemantics`, `streamingMetadataInterleaving`,
|
|
296
|
+
`streamingToolBoundary`, `telemetryDefaultNonRecording`, and
|
|
297
|
+
`telemetryOptInRecording` as distinct booleans. Reports are retained as CI artifacts for review. A
|
|
246
298
|
final job validates every evidence path and emits an admission candidate only
|
|
247
299
|
when all three operating-system lanes pass for every built-in adapter.
|
|
248
300
|
Python conformance is pinned to 3.10.11, the final Python 3.10 release with
|
|
@@ -287,10 +339,11 @@ npx workspai agent framework plan \
|
|
|
287
339
|
--name support-agent
|
|
288
340
|
```
|
|
289
341
|
|
|
290
|
-
When more than one
|
|
342
|
+
When more than one published framework shares a runtime, pass `--framework`
|
|
291
343
|
explicitly. Workspai does not guess or fall back. `--runtime python` without
|
|
292
|
-
`--framework`
|
|
293
|
-
|
|
344
|
+
`--framework` requires an explicit choice because Microsoft Agent Framework,
|
|
345
|
+
OpenAI Agents SDK, and Google ADK are all published and release-admitted at
|
|
346
|
+
their exact reviewed baselines.
|
|
294
347
|
|
|
295
348
|
The interactive attach command displays the same plan and asks before granting
|
|
296
349
|
its filesystem effect. Automation must opt in with `--yes` and records the
|
|
@@ -397,12 +450,12 @@ and unadvertised runtimes fail closed.
|
|
|
397
450
|
|
|
398
451
|
The generic boundary was hardened against two deliberately different
|
|
399
452
|
integration shapes: a filesystem-first Node.js framework and the
|
|
400
|
-
multi-language Microsoft Agent Framework. OpenAI Agents SDK
|
|
401
|
-
TypeScript adapters
|
|
402
|
-
and verification host. They are selectable for Create and Attach
|
|
403
|
-
their exact manifest digest, framework baseline, runtime, and
|
|
404
|
-
|
|
405
|
-
selectable while their current inventory entries stay valid.
|
|
453
|
+
multi-language Microsoft Agent Framework. OpenAI Agents SDK and Google ADK
|
|
454
|
+
Python and TypeScript adapters share that same create, attach, detection,
|
|
455
|
+
ownership, and verification host. They are selectable for Create and Attach
|
|
456
|
+
only while their exact manifest digest, framework baseline, runtime, and
|
|
457
|
+
platform list remain in the reviewed release-admission inventory. Microsoft
|
|
458
|
+
adapters remain selectable while their current inventory entries stay valid.
|
|
406
459
|
|
|
407
460
|
## Implementation sequence
|
|
408
461
|
|
|
@@ -411,8 +464,9 @@ selectable while their current inventory entries stay valid.
|
|
|
411
464
|
2. Use the framework-neutral registry, detector, and bounded manifest loader.
|
|
412
465
|
3. Review the Microsoft Python and .NET digest-bound evidence produced by the
|
|
413
466
|
full conformance matrix.
|
|
414
|
-
4. Review the OpenAI Python and TypeScript digest-bound evidence
|
|
415
|
-
the same matrix; do not treat local Linux success as multi-OS
|
|
467
|
+
4. Review the OpenAI and Google Python and TypeScript digest-bound evidence
|
|
468
|
+
produced by the same matrix; do not treat local Linux success as multi-OS
|
|
469
|
+
admission.
|
|
416
470
|
5. Keep automated upstream discovery separate from release authority: report
|
|
417
471
|
newer registry versions, then update pins only through a reviewed change.
|
|
418
472
|
Re-run the full matrix before treating a new pin as independently proven.
|
package/docs/ci-workflows.md
CHANGED
|
@@ -13,6 +13,8 @@ Map of GitHub Actions workflows in this repository. Use this when editing CI to
|
|
|
13
13
|
| Official generator smoke | `.github/workflows/frontend-generator-smoke.yml` | Contract-driven official-generator drift gate |
|
|
14
14
|
| Agent Framework matrix | `.github/workflows/agent-framework-conformance.yml` | Affected-family Linux PR gate plus manual twelve-lane release qualification and admission |
|
|
15
15
|
| Agent Framework discovery | `.github/workflows/agent-framework-version-discovery.yml` | Weekly PyPI/NuGet candidate report; no commit, PR, or contract rewrite |
|
|
16
|
+
| Model Gateway matrix | `.github/workflows/model-gateway-qualification.yml` | Three-OS generated-project and lifecycle qualification; manual fast mode stays on Linux |
|
|
17
|
+
| Model Gateway discovery | `.github/workflows/model-gateway-version-discovery.yml` | Weekly npm/PyPI/GitHub candidate report; no baseline write, commit, or PR |
|
|
16
18
|
| Security | `.github/workflows/security.yml` | Path-aware scanning plus the always-resolved `Security Gate` |
|
|
17
19
|
| Manual npm release | `.github/workflows/release-npm-manual.yml` | Maintainer-only release gate and publish workflow |
|
|
18
20
|
| Discord announcement | `.github/workflows/discord-release-announcement.yml` | Preview and publish one idempotent product-aware release announcement |
|
|
@@ -27,17 +29,26 @@ a report and artifact. It does not commit, open a pull request, regenerate
|
|
|
27
29
|
Create contracts, or write `release-admissions.v2.json`. A human pin update
|
|
28
30
|
still has to pass the manual `full` mode of `agent-framework-conformance` on
|
|
29
31
|
Linux, macOS, and Windows for every built-in adapter runtime. Pull requests run
|
|
30
|
-
the faster Linux gate only for the affected Microsoft or
|
|
31
|
-
agent-framework surfaces select
|
|
32
|
-
specialized workflow. The full matrix compiles the nested `agents/primary`
|
|
32
|
+
the faster Linux gate only for the affected Microsoft, OpenAI, or Google family;
|
|
33
|
+
shared agent-framework surfaces select the affected families, while documentation-only
|
|
34
|
+
changes skip the specialized workflow. The full matrix compiles the nested `agents/primary`
|
|
33
35
|
runtime, runs credentialless context-boundary tests, and records manifest-bound
|
|
34
36
|
admission data plus semantic implementation provenance. Promotion requires the
|
|
35
37
|
candidate source commit to equal the checked-out promotion commit. An
|
|
36
38
|
implementation digest is audit evidence, not a runtime lock and not a manual
|
|
37
39
|
maintenance requirement after every routine adapter edit.
|
|
38
|
-
It never sets Foundry or
|
|
40
|
+
It never sets Foundry, OpenAI, Gemini, or Vertex credentials. Only a reviewed admission on the protected
|
|
39
41
|
version-update branch can promote a green candidate.
|
|
40
42
|
|
|
43
|
+
OpenRouter AI Gateway kits are not part of the Agent Framework conformance
|
|
44
|
+
matrix. They use a dedicated qualification workflow for generated-project
|
|
45
|
+
install, tests, smoke, missing-key startup, Workspace Run, and Workspace
|
|
46
|
+
Verify. Path-triggered runs and manual `full` mode qualify both adapters on
|
|
47
|
+
Linux, macOS, and Windows. Manual `fast` mode is the only single-OS path.
|
|
48
|
+
Weekly discovery reports newer stable sdk-core versions, with registry and
|
|
49
|
+
GitHub agreement shown as a candidate diff. It does not write the baseline or
|
|
50
|
+
open a pull request. See [AI Gateway](./model-gateways.md).
|
|
51
|
+
|
|
41
52
|
The PR template at `.github/agent-framework-version-update.md` is for that
|
|
42
53
|
human pin update. It is not opened by the weekly discovery workflow.
|
|
43
54
|
|
|
@@ -102,7 +113,10 @@ cross-platform qualification is needed. npm and Composer download caches reduce
|
|
|
102
113
|
repeated network work without treating an earlier commit or calendar-day result
|
|
103
114
|
as proof for a new SHA.
|
|
104
115
|
|
|
105
|
-
|
|
116
|
+
Linux is the only matrix job that collects V8 coverage, and that report is
|
|
117
|
+
text plus `coverage-final.json`. macOS and Windows run the same suite without
|
|
118
|
+
coverage instrumentation and without a second `tsup`, because the job build
|
|
119
|
+
already produced `dist`. The Windows test lane intentionally uses bounded Vitest worker concurrency
|
|
106
120
|
and platform-aware transaction timeouts. Filesystem-heavy workspace tests must
|
|
107
121
|
finish their transaction before teardown; cleanup retries transient Windows
|
|
108
122
|
`EBUSY`, `ENOTEMPTY`, and `EPERM` states instead of converting one slow operation into a
|
|
@@ -125,7 +139,7 @@ Validate or preview the current CLI announcement locally:
|
|
|
125
139
|
npm --workspace workspai run check:release-announcement
|
|
126
140
|
npm --workspace workspai run release:announcement -- \
|
|
127
141
|
--product workspai-cli \
|
|
128
|
-
--tag v0.
|
|
142
|
+
--tag v0.78.0 \
|
|
129
143
|
--markdown-output /tmp/workspai-discord-announcement.md
|
|
130
144
|
```
|
|
131
145
|
|
|
@@ -82,6 +82,8 @@ npx workspai change capsule validate --change <change-id> [--workspace <path>] [
|
|
|
82
82
|
npx workspai change capsule export --change <change-id> --output <path> [--workspace <path>] [--json]
|
|
83
83
|
npx workspai create project agent.microsoft.python <name> [--agent-name <name>] [--skip-git]
|
|
84
84
|
npx workspai create project agent.microsoft.dotnet <name> [--agent-name <name>] [--skip-git]
|
|
85
|
+
npx workspai create project gateway.openrouter.typescript <name> [--skip-git] [--json]
|
|
86
|
+
npx workspai create project gateway.openrouter.python <name> [--skip-git] [--json]
|
|
85
87
|
npx workspai agent bootstrap [--project <path>] [--for-agent <host>] [--no-live-inputs] [--strict] [--json]
|
|
86
88
|
npx workspai agent framework list [--json]
|
|
87
89
|
npx workspai agent framework plan --project <name> --runtime <python|dotnet|node> [--framework <id>] --name <agent> [--goal <goal-id>] [--workspace <path>] [--json]
|
|
@@ -278,7 +280,9 @@ See [Canonical-first agent entry](./agent-entry.md).
|
|
|
278
280
|
agent runtime. `list` exposes every built-in adapter and its release-admission
|
|
279
281
|
state. In this CLI version Microsoft Python `1.18.0` and .NET `1.21.0` remain
|
|
280
282
|
`preview`. OpenAI Agents SDK Python `0.22.2` and TypeScript `0.18.0` are
|
|
281
|
-
labeled `stable`.
|
|
283
|
+
labeled `stable`. Google ADK Python `2.9.2` and TypeScript `2.1.0` remain
|
|
284
|
+
labeled `preview` and are admitted for Create and Attach by their complete
|
|
285
|
+
Linux, macOS, and Windows evidence. Create and Attach require the reviewed v2 release inventory,
|
|
282
286
|
whose manifest, framework baseline, runtime, and platform claims were promoted
|
|
283
287
|
from the Linux, macOS, and Windows release matrix. Semantic implementation
|
|
284
288
|
digests remain audit provenance rather than runtime authorization. `plan`
|
|
@@ -293,7 +297,8 @@ agent.microsoft.python|dotnet` uses the same admitted lifecycle for a new
|
|
|
293
297
|
project: it registers the project, plans against a Model baseline, writes the
|
|
294
298
|
nested runtime, then re-observes Model/Graph before it claims Intelligence is
|
|
295
299
|
sealed. `create project agent.openai.python|typescript` uses the same admitted
|
|
296
|
-
lifecycle.
|
|
300
|
+
lifecycle. `create project agent.google-adk.python|typescript` uses the same
|
|
301
|
+
admitted lifecycle. Dependency installation, credentials, generated-code execution, and
|
|
297
302
|
model provider calls are never implied by that approval. `apply` is the
|
|
298
303
|
automation counterpart for a plan that was separately authorized with
|
|
299
304
|
`change authorize`. Any adapter, version, manifest, runtime, or platform drift
|
|
@@ -22,6 +22,7 @@ Native create is reserved for Workspai-owned kits with deterministic contracts:
|
|
|
22
22
|
- Spring Boot
|
|
23
23
|
- ASP.NET Core Web API
|
|
24
24
|
- Rust / Axum
|
|
25
|
+
- OpenRouter AI Gateway (TypeScript and Python)
|
|
25
26
|
|
|
26
27
|
These kits can be exposed through `workspai create project` because Workspai can
|
|
27
28
|
create the project and immediately produce the expected `.workspai` metadata,
|
|
@@ -16,9 +16,9 @@ For a compact list of command syntax, see
|
|
|
16
16
|
A **workspace** is the shared home for related projects, rules, and saved
|
|
17
17
|
Workspai reports.
|
|
18
18
|
|
|
19
|
-
A **project** is an application, service,
|
|
20
|
-
API, Go service, Spring Boot service, .NET API, frontend application,
|
|
21
|
-
Microsoft Agent Framework entrypoint.
|
|
19
|
+
A **project** is an application, service, governed agent, or model gateway, such as a FastAPI
|
|
20
|
+
API, Go service, Spring Boot service, .NET API, frontend application,
|
|
21
|
+
Microsoft Agent Framework entrypoint, or OpenRouter AI Gateway.
|
|
22
22
|
|
|
23
23
|
The canonical commands are:
|
|
24
24
|
|
|
@@ -42,6 +42,7 @@ does not have exactly the same behavior.
|
|
|
42
42
|
| Turn the current folder into a workspace before creating | `npx workspai create project gofiber.standard api --create-workspace --yes` |
|
|
43
43
|
| Create a project without workspace management | `npx workspai create project gofiber.standard api --no-workspace --yes` |
|
|
44
44
|
| Create a governed Microsoft Agent Framework project | `npx workspai create project agent.microsoft.python support-agent` |
|
|
45
|
+
| Create a server-owned OpenRouter AI Gateway | `npx workspai create project gateway.openrouter.typescript model-gateway` |
|
|
45
46
|
| Preview a supported create plan | `npx workspai create project frontend.nextjs web --dry-run` |
|
|
46
47
|
|
|
47
48
|
# Creating a workspace
|
|
@@ -396,6 +397,8 @@ project metadata and performs the selected workspace registration.
|
|
|
396
397
|
| `agent.microsoft.dotnet` | .NET | `Microsoft.Agents.AI` `1.21.0`, Foundry `1.21.0-preview.260911.1` | Isolated `agents/<instance>/` with the executable project plus a dedicated test project |
|
|
397
398
|
| `agent.openai.python` | Python | `openai-agents` `0.22.2` | Isolated `agents/<instance>/` with pip-editable `pyproject.toml`, credentialless `unittest`, and `.env.example` |
|
|
398
399
|
| `agent.openai.typescript` | Node.js | `@openai/agents` `0.18.0`, `zod` `4.6.5` | Isolated `agents/<instance>/` with `package.json`, credentialless `node:test`, and `.env.example` |
|
|
400
|
+
| `agent.google-adk.python` | Python | `google-adk` `2.9.2` | Isolated `agents/<instance>/` with pip-editable `pyproject.toml`, credentialless `unittest`, and provider profiles `gemini-api` / `vertex-ai`. Preview and release-admitted. |
|
|
401
|
+
| `agent.google-adk.typescript` | Node.js | `@google/adk` `2.1.0`, `zod` `4.6.5` | Isolated `agents/<instance>/` with `package.json`, credentialless `node:test`, and provider profiles `gemini-api` / `vertex-ai`. Preview, release-admitted, and independent from the Python runtime. |
|
|
399
402
|
|
|
400
403
|
Interactive `workspai create` shows these kits under **AI Agent** after
|
|
401
404
|
reviewed release admission. Agent kits require Workspace governance and therefore do not
|
|
@@ -418,6 +421,21 @@ npx workspai change verify --change <change-id> --json
|
|
|
418
421
|
independent proof for this scaffold. See
|
|
419
422
|
[Agent Framework Adapter Contract](./agent-framework-adapters.md).
|
|
420
423
|
|
|
424
|
+
## AI Gateway kits
|
|
425
|
+
|
|
426
|
+
| Kit | Runtime | Tested baseline | Layout |
|
|
427
|
+
| --- | --- | --- | --- |
|
|
428
|
+
| `gateway.openrouter.typescript` | Node.js | `@openrouter/sdk` `1.3.11`, TypeScript `5.9.3`, `@types/node` `22.20.3` | Server-owned OpenRouter Client SDK starter with `gateway.policy.json`, credentialless `node:test`, and `.env.example` |
|
|
429
|
+
| `gateway.openrouter.python` | Python | `openrouter` `1.2.11` | Server-owned OpenRouter Client SDK starter with `gateway.policy.json`, credentialless `unittest`, and `.env.example` |
|
|
430
|
+
|
|
431
|
+
Interactive `workspai create` shows these kits under **AI Gateway** with the
|
|
432
|
+
hint **Unified model access and routing**. A model identifier is runtime
|
|
433
|
+
configuration, not a kit. Create does not install dependencies, call a model,
|
|
434
|
+
or store credentials. Attach is not supported for Gateway in this release.
|
|
435
|
+
The official Go Client SDK remains beta (`v0.8.11` on
|
|
436
|
+
2026-09-21) and is not admitted. See
|
|
437
|
+
[AI Gateway](./model-gateways.md).
|
|
438
|
+
|
|
421
439
|
## Desktop, extension, and additional backend generators
|
|
422
440
|
|
|
423
441
|
| Category | Project | Kit | Creation owner |
|
|
@@ -428,10 +446,11 @@ independent proof for this scaffold. See
|
|
|
428
446
|
| Desktop | Electron Forge | `desktop.electron` | create-electron-app |
|
|
429
447
|
| Extension | VS Code Extension | `extension.vscode` | generator-code |
|
|
430
448
|
|
|
431
|
-
Every generated project receives a canonical `kind` and `category`. The
|
|
432
|
-
user-facing creation categories are `backend`, `frontend`, `desktop`, `agent`,
|
|
433
|
-
they remain visible in the Workspace Model and
|
|
434
|
-
not have to guess a project’s role from its
|
|
449
|
+
Every generated project receives a canonical `kind` and `category`. The
|
|
450
|
+
user-facing creation categories are `backend`, `frontend`, `desktop`, `agent`,
|
|
451
|
+
`gateway`, and `extension`; they remain visible in the Workspace Model and
|
|
452
|
+
Knowledge Graph so consumers do not have to guess a project’s role from its
|
|
453
|
+
runtime.
|
|
435
454
|
|
|
436
455
|
Official generators may download packages and therefore need network access.
|
|
437
456
|
Each available integration requests the upstream latest stable channel rather
|
package/docs/doctor-command.md
CHANGED
|
@@ -775,12 +775,17 @@ These fields are designed for release gates and extension timeline cards that mu
|
|
|
775
775
|
- Supports Workspai, legacy RapidKit, and non-Workspai projects when project metadata is missing.
|
|
776
776
|
- Evidence: `.workspai/reports/doctor-project-last-run.json`.
|
|
777
777
|
- `--fix`, `--plan`, and `--apply` apply only project-scoped fixes.
|
|
778
|
-
- Governed Microsoft Agent Framework
|
|
779
|
-
`kind` as `agent`. Microsoft retains
|
|
780
|
-
retains `openai-agents
|
|
778
|
+
- Governed Microsoft Agent Framework, OpenAI Agents SDK, and Google ADK
|
|
779
|
+
projects keep `kind` as `agent`. Microsoft retains
|
|
780
|
+
`microsoft-agent-framework`; OpenAI retains `openai-agents`; Google ADK
|
|
781
|
+
retains `google-adk`. Doctor discovers nested environment examples and
|
|
782
|
+
dependency manifests under `agents/primary` and aims Python/`uv`, Node
|
|
781
783
|
dependency manifests under `agents/primary` and aims Python/`uv`, Node
|
|
782
784
|
`npm --prefix`, or .NET repair commands at that runtime, not at a phantom
|
|
783
785
|
project-root manifest.
|
|
786
|
+
- OpenRouter AI Gateway projects keep `kind` as `gateway` and `framework` as
|
|
787
|
+
`openrouter`. Doctor uses the project-root Node or Python runtime, not the
|
|
788
|
+
Agent Framework nested layout.
|
|
784
789
|
|
|
785
790
|
## Project JSON fields (AI/automation)
|
|
786
791
|
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# AI Gateway
|
|
2
|
+
|
|
3
|
+
AI Gateway is a first-class Workspai project category for unified model access
|
|
4
|
+
and routing. It is not an Agent Framework.
|
|
5
|
+
|
|
6
|
+
## Why Gateway is not Agent Framework
|
|
7
|
+
|
|
8
|
+
Agent Framework owns agent loops, tools, handoffs, state, and orchestration.
|
|
9
|
+
AI Gateway owns model and provider access, routing preferences, fallbacks,
|
|
10
|
+
privacy policy, and normalized transport behavior.
|
|
11
|
+
|
|
12
|
+
A model identifier is runtime configuration, not a project kit. Workspai owns
|
|
13
|
+
project generation, governance, context, lifecycle, verification, workspace
|
|
14
|
+
integration, and proof. OpenRouter owns provider and model routing. Generated
|
|
15
|
+
projects do not reimplement OpenRouter's routing algorithms.
|
|
16
|
+
|
|
17
|
+
Future agent-to-gateway composition should consume the generated Model Gateway
|
|
18
|
+
port. Do not copy these templates into an Agent Framework kit.
|
|
19
|
+
|
|
20
|
+
## Current kits
|
|
21
|
+
|
|
22
|
+
These kits ship as source-ready. That is not Workspai release admission and
|
|
23
|
+
does not label them `stable` or `qualified`. SDK `1.x` stability is an upstream
|
|
24
|
+
classification, not a Workspai release gate.
|
|
25
|
+
|
|
26
|
+
| Kit | Runtime | Official Client SDK | Reviewed |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| `gateway.openrouter.typescript` | Node.js `>=20` | `@openrouter/sdk` `1.3.11` | 2026-09-21 |
|
|
29
|
+
| `gateway.openrouter.python` | Python `>=3.10` | `openrouter` `1.2.11` | 2026-09-21 |
|
|
30
|
+
|
|
31
|
+
Aliases: `openrouter.typescript`, `gateway.openrouter.ts`, `openrouter-typescript`,
|
|
32
|
+
and the matching Python aliases. Bare `openrouter` is not an alias.
|
|
33
|
+
|
|
34
|
+
Interactive Create shows **AI Gateway** with the hint **Unified model access
|
|
35
|
+
and routing** after at least one gateway kit is registered. Labels are:
|
|
36
|
+
|
|
37
|
+
- `AI Gateway · OpenRouter · TypeScript`
|
|
38
|
+
- `AI Gateway · OpenRouter · Python`
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx workspai create project gateway.openrouter.typescript <name>
|
|
42
|
+
npx workspai create project gateway.openrouter.python <name>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Create does not install dependencies, call a model, or write credentials.
|
|
46
|
+
|
|
47
|
+
Attach is not supported for AI Gateway in this release. Do not use
|
|
48
|
+
`agent framework attach` or any gateway-specific attach command. Adopt an
|
|
49
|
+
existing OpenRouter project only by creating a new gateway kit or by adding
|
|
50
|
+
the generated starter beside user-owned code. Repeated Create is not Attach.
|
|
51
|
+
|
|
52
|
+
## Version upgrades
|
|
53
|
+
|
|
54
|
+
Exact SDK pins live only in
|
|
55
|
+
[`version-baselines.v1.json`](../src/model-gateways/version-baselines.v1.json).
|
|
56
|
+
`releaseChannel: stable` means the upstream SDK release is stable. It does not
|
|
57
|
+
mean the Workspai adapter passed Linux, macOS, and Windows qualification.
|
|
58
|
+
|
|
59
|
+
The supported upgrade path is read-only until a human reviews the proposal:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
discover → propose → review → qualify → merge
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm --workspace workspai run propose:model-gateway:versions -- \
|
|
67
|
+
--baseline src/model-gateways/version-baselines.v1.json \
|
|
68
|
+
--report test-results/model-gateway-version-discovery.json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The command does not commit, push, open a pull request, or write the baseline
|
|
72
|
+
unless `--write` is passed after the on-disk file matches the validated
|
|
73
|
+
in-memory document and every candidate agrees across registry and GitHub.
|
|
74
|
+
A normal SDK upgrade should not require editing generator source when the
|
|
75
|
+
upstream contract is compatible. Three-OS qualification must be green on the
|
|
76
|
+
same commit before a Workspai release can present these kits as qualified.
|
|
77
|
+
|
|
78
|
+
## Intentionally unsupported languages
|
|
79
|
+
|
|
80
|
+
The official Go SDK (`github.com/OpenRouterTeam/go-sdk`) was evaluated on
|
|
81
|
+
2026-09-21. The upstream README classifies the current `0.x` line as beta and
|
|
82
|
+
warns that breaking changes may ship in minor releases. proxy.golang.org
|
|
83
|
+
reported `v0.8.11`. Go is excluded from the stable Create surface until
|
|
84
|
+
upstream classifies a release line as stable.
|
|
85
|
+
|
|
86
|
+
The OpenRouter Agent SDK (`@openrouter/agent`) belongs to the agent-runtime
|
|
87
|
+
dimension. It is not used by AI Gateway kits and is not added as
|
|
88
|
+
`agent.openrouter.typescript` in this family.
|
|
89
|
+
|
|
90
|
+
## Configuration
|
|
91
|
+
|
|
92
|
+
Required environment:
|
|
93
|
+
|
|
94
|
+
- `OPENROUTER_API_KEY` — server-side only
|
|
95
|
+
- `OPENROUTER_MODEL` — chosen by the operator; Workspai does not default a
|
|
96
|
+
billable model
|
|
97
|
+
|
|
98
|
+
Optional attribution maps to the official SDK fields:
|
|
99
|
+
|
|
100
|
+
- TypeScript: `httpReferer`, `appTitle` via `OPENROUTER_HTTP_REFERER` and
|
|
101
|
+
`OPENROUTER_APP_TITLE`
|
|
102
|
+
- Python: `http_referer`, `x_open_router_title` via `OPENROUTER_HTTP_REFERER`
|
|
103
|
+
and `OPENROUTER_X_OPEN_ROUTER_TITLE`
|
|
104
|
+
|
|
105
|
+
Routing and privacy policy live in source-controlled `gateway.policy.json`.
|
|
106
|
+
Field names match the pinned SDK for that language. Unknown fields are rejected
|
|
107
|
+
fail-closed in both languages. Supported controls:
|
|
108
|
+
|
|
109
|
+
| Official field | TypeScript policy | Python policy | Validation |
|
|
110
|
+
| --- | --- | --- | --- |
|
|
111
|
+
| model fallbacks | `models` | `models` | unique non-empty strings; must not repeat `OPENROUTER_MODEL` |
|
|
112
|
+
| `allowFallbacks` | `allowFallbacks` | `allow_fallbacks` | boolean when present |
|
|
113
|
+
| `order` / `only` / `ignore` | same camelCase | same snake_case | unique non-empty strings; `only`∩`ignore` empty; `order` must not include ignored providers |
|
|
114
|
+
| `sort` | string or `{ by, partition }` | string or `{ by, partition }` | `price`/`throughput`/`latency`/`exacto`; `partition` is `model` or `none` |
|
|
115
|
+
| `quantizations` | camelCase list | snake_case list | pinned SDK enum values |
|
|
116
|
+
| `requireParameters` | `requireParameters` | `require_parameters` | boolean when present |
|
|
117
|
+
| `zdr` | `zdr` | `zdr` | boolean; cannot combine with `dataCollection`/`data_collection` `allow` |
|
|
118
|
+
| `dataCollection` | `dataCollection` | `data_collection` | `allow` or `deny` |
|
|
119
|
+
| `enforceDistillableText` | `enforceDistillableText` | `enforce_distillable_text` | boolean when present; both pinned SDKs expose this field |
|
|
120
|
+
| `maxPrice` | `maxPrice` | `max_price` | object with `prompt`/`completion`/`request`/`image`/`audio` as non-negative numeric strings that remain finite after numeric interpretation |
|
|
121
|
+
| `preferredMinThroughput` | number or `{ p50, p75, p90, p99 }` | same | finite non-negative numbers |
|
|
122
|
+
| `preferredMaxLatency` | number or `{ p50, p75, p90, p99 }` | same | finite non-negative numbers |
|
|
123
|
+
| timeout | `timeoutMs` | `timeout_ms` | integer 1–600000; env overrides with a digit string |
|
|
124
|
+
| attribution | `httpReferer`, `appTitle` | `http_referer`, `x_open_router_title` | strings when present |
|
|
125
|
+
|
|
126
|
+
`exacto` is part of the pinned SDK `ProviderSort` enums, not a Workspai extension.
|
|
127
|
+
Malformed JSON and wrong types raise `GatewayConfigurationError` before SDK
|
|
128
|
+
construction. Contradictory policy, including ZDR combined with
|
|
129
|
+
`dataCollection: "allow"`, fails before a network request.
|
|
130
|
+
|
|
131
|
+
Omitted privacy or routing fields leave OpenRouter upstream defaults in
|
|
132
|
+
effect. The SDKs document `dataCollection` / `data_collection` default as
|
|
133
|
+
`allow` when unset. Application-side retries are set to strategy `none` so they
|
|
134
|
+
cannot duplicate billable requests. OpenRouter may still apply provider
|
|
135
|
+
fallbacks when `allowFallbacks` / `allow_fallbacks` is not `false`.
|
|
136
|
+
|
|
137
|
+
Capabilities such as tools, JSON schema, structured output, images, audio, and
|
|
138
|
+
embeddings vary by model and provider. These starters only claim chat
|
|
139
|
+
generation and streaming.
|
|
140
|
+
|
|
141
|
+
## Security
|
|
142
|
+
|
|
143
|
+
- Never commit, log, or serialize API keys.
|
|
144
|
+
- Generated clients are server-side only. Do not expose `OPENROUTER_API_KEY`
|
|
145
|
+
through browser bundles or frontend environment prefixes such as `VITE_` or
|
|
146
|
+
`NEXT_PUBLIC_`.
|
|
147
|
+
- Diagnostics redact Authorization headers, API keys, URL secrets, and request
|
|
148
|
+
bodies.
|
|
149
|
+
- TLS verification is not disabled.
|
|
150
|
+
- Telemetry and prompt recording are not added.
|
|
151
|
+
|
|
152
|
+
## Lifecycle
|
|
153
|
+
|
|
154
|
+
After local install, documented commands are:
|
|
155
|
+
|
|
156
|
+
TypeScript: `npm install`, `npm test`, `npm run typecheck`, `npm run build`,
|
|
157
|
+
`npm run smoke`, `npm start`.
|
|
158
|
+
|
|
159
|
+
Python: create a virtualenv, `python -m pip install -e .`, `python -m compileall .`,
|
|
160
|
+
`python -m unittest discover -s tests`, `python main.py --smoke`, `python main.py`.
|
|
161
|
+
|
|
162
|
+
Workspace Run uses those same manifests and the generated project's declared
|
|
163
|
+
polyglot unit commands. Stage commands, including `&&` chains and a multi-step
|
|
164
|
+
`start`, run as argv. They are not passed to a shell, so an absolute interpreter
|
|
165
|
+
path cannot be expanded by `/bin/sh`. `test` and `--smoke` inject a fake
|
|
166
|
+
transport. They do not require a live `OPENROUTER_API_KEY`.
|
|
167
|
+
|
|
168
|
+
Streaming uses the official Client SDK event stream. Opening and iterating the
|
|
169
|
+
stream are both normalized: configuration errors stay configuration errors,
|
|
170
|
+
timeouts and caller aborts stay recognizable, and other failures become
|
|
171
|
+
`GatewayUpstreamError` with redacted messages and preserved status / request id /
|
|
172
|
+
retry-after when the SDK exposes them. Cleanup is once-only and prefers, in
|
|
173
|
+
order: async iterator `return()` / generator `close()`, then SDK `close()`, then
|
|
174
|
+
SDK `cancel()`. A cleanup failure does not replace the primary error or convert
|
|
175
|
+
a successful completion into an error.
|
|
176
|
+
|
|
177
|
+
The TypeScript starter forwards `AbortSignal` through `chat.send` options,
|
|
178
|
+
including an already-aborted signal. Pinned `@openrouter/sdk` `1.3.11`
|
|
179
|
+
`EventStream` extends `ReadableStream` and does not expose a dedicated `close()`.
|
|
180
|
+
Cancellation is `ReadableStream` async-iterator `return()` → `cancel()`. If the
|
|
181
|
+
stream has already errored, `cancel()` may be a no-op; the gateway still drops
|
|
182
|
+
its own reference and remains usable for a later request. The Python starter
|
|
183
|
+
closes the SDK iterator first (`EventStream.generator.close()`), which is the
|
|
184
|
+
consumer `generator.close()` path. Python does not expose `AbortSignal`.
|
|
185
|
+
Application-side retries stay disabled. Timeouts use SDK `timeoutMs` /
|
|
186
|
+
`timeout_ms`. An empty successful completion returns an empty string.
|
|
187
|
+
|
|
188
|
+
Exact pins live in
|
|
189
|
+
[`version-baselines.v1.json`](../src/model-gateways/version-baselines.v1.json).
|
|
190
|
+
Do not copy versions into unrelated files.
|
|
191
|
+
|
|
192
|
+
## Qualification boundary
|
|
193
|
+
|
|
194
|
+
Workspai source readiness is not release qualification. These kits are not
|
|
195
|
+
described as `stable`, `release-ready`, `admitted`, or `qualified` until Linux,
|
|
196
|
+
macOS, and Windows CI prove generated-project installation and lifecycle on the
|
|
197
|
+
same commit SHA, and a later admission change records that evidence. The
|
|
198
|
+
dedicated workflow is `.github/workflows/model-gateway-qualification.yml`.
|
|
199
|
+
Path-triggered runs and manual `full` mode each qualify both the TypeScript and
|
|
200
|
+
Python OpenRouter adapters on Linux, macOS, and Windows. Manual `fast` mode
|
|
201
|
+
stays on Linux. There is no unused kit axis. Discovery is
|
|
202
|
+
`.github/workflows/model-gateway-version-discovery.yml`. Its job summary shows
|
|
203
|
+
the sdk-core candidate diff when registry and GitHub agree. A green job that
|
|
204
|
+
skipped installation or lifecycle is not qualified.
|
|
@@ -12,10 +12,11 @@ native kits:
|
|
|
12
12
|
This policy does not cover FastAPI or NestJS kits owned by the RapidKit Python
|
|
13
13
|
engine. It also does not cover generators delegated to an upstream official
|
|
14
14
|
CLI, such as Next.js, Astro, Angular, Vue, Svelte, Nuxt, or React Native.
|
|
15
|
-
Governed Microsoft Agent Framework
|
|
16
|
-
separately through the
|
|
15
|
+
Governed Microsoft Agent Framework, OpenAI Agents SDK, and Google ADK kits are
|
|
16
|
+
versioned separately through the
|
|
17
17
|
[Agent Framework Adapter Contract](./agent-framework-adapters.md); they are
|
|
18
|
-
not native HTTP service generators.
|
|
18
|
+
not native HTTP service generators. OpenRouter AI Gateway kits are versioned
|
|
19
|
+
through [AI Gateway](./model-gateways.md) and are not Agent Framework kits.
|
|
19
20
|
|
|
20
21
|
## Current tested baseline
|
|
21
22
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "workspai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.78.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Open-source workspace intelligence CLI for software systems: create, adopt, govern, verify, and align polyglot workspaces for humans, CI, IDEs, and AI agents.",
|
|
6
6
|
"keywords": [
|
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
"test:parity-contract": "corepack npm run check:shared-contracts && vitest run src/__tests__/contracts/import-stack-parity.snapshot.test.ts",
|
|
98
98
|
"test:watch": "vitest",
|
|
99
99
|
"test:coverage": "corepack npm run test:prebuild && vitest run --coverage --reporter=default --reporter=json --outputFile.json=test-results/vitest.json",
|
|
100
|
+
"test:coverage:ci": "vitest run --coverage --reporter=default --reporter=json --outputFile.json=test-results/vitest.json",
|
|
100
101
|
"test:prepare-embeddings": "node scripts/prepare-mock-embeddings.mjs",
|
|
101
102
|
"generate-embeddings": "npx tsx src/ai/generate-embeddings.ts",
|
|
102
103
|
"verify:package-cli": "node scripts/verify-package-cli.mjs",
|
|
@@ -117,9 +118,13 @@
|
|
|
117
118
|
"test:agent-framework:dotnet": "tsx scripts/smoke-microsoft-agent-framework-adapter.ts --runtime dotnet",
|
|
118
119
|
"test:agent-framework:openai:python": "tsx scripts/smoke-openai-agents-adapter.ts --runtime python",
|
|
119
120
|
"test:agent-framework:openai:typescript": "tsx scripts/smoke-openai-agents-adapter.ts --runtime typescript",
|
|
121
|
+
"test:agent-framework:google-adk:python": "tsx scripts/smoke-google-adk-adapter.ts --runtime python",
|
|
122
|
+
"test:agent-framework:google-adk:typescript": "tsx scripts/smoke-google-adk-adapter.ts --runtime typescript",
|
|
120
123
|
"verify:agent-framework:matrix": "tsx scripts/verify-agent-framework-conformance.ts --reports test-results/agent-framework-conformance",
|
|
121
124
|
"discover:agent-framework:versions": "tsx scripts/discover-agent-framework-versions.ts",
|
|
122
125
|
"propose:agent-framework:versions": "tsx scripts/propose-agent-framework-version-update.ts",
|
|
126
|
+
"discover:model-gateway:versions": "tsx scripts/propose-model-gateway-version-update.ts",
|
|
127
|
+
"propose:model-gateway:versions": "tsx scripts/propose-model-gateway-version-update.ts",
|
|
123
128
|
"promote:agent-framework:admission": "tsx scripts/promote-agent-framework-release-admission.ts",
|
|
124
129
|
"prepush:test:runtime-contract": "node scripts/run-cached-prepush-gate.mjs runtime-contract",
|
|
125
130
|
"test:runtime-matrix:full": "node scripts/runtime-acceptance-matrix.mjs --full",
|