workspai 0.75.1 → 0.76.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/contracts/agent-framework-capabilities.v1.json +2 -2
- package/contracts/cli-runtime-command-inventory.v1.snapshot.json +12 -0
- package/contracts/create-planner-capabilities.v1.json +24 -0
- package/contracts/extension-cli-compatibility.v1.json +4 -2
- package/contracts/published-contract-catalog.v1.json +10 -0
- package/contracts/runtime-command-surface.v1.json +3 -1
- package/contracts/workspace-intelligence/agent-framework-admission-candidate.v2.json +217 -0
- package/contracts/workspace-intelligence/agent-framework-conformance-report.v2.json +274 -0
- package/contracts/workspace-intelligence-architecture.v1.json +5 -3
- package/dist/analyze-QVRVJB7I.js +1 -0
- package/dist/{artifact-remediation-plan-HD5K52UJ.js → artifact-remediation-plan-SRH2Q6N2.js} +1 -1
- package/dist/autopilot-release-DOGIETAT.js +1 -0
- package/dist/capabilities-command-FYBUVHZ7.js +1 -0
- package/dist/{chunk-SCKEFXF5.js → chunk-23CNBYIW.js} +1 -1
- package/dist/chunk-2DZLCINC.js +1 -0
- package/dist/{chunk-2GWQ6NZV.js → chunk-2I2A55RE.js} +1 -1
- package/dist/{chunk-W7I65IXY.js → chunk-3HXEPDFF.js} +2 -2
- package/dist/{chunk-2OCJKLTW.js → chunk-4BBFEHPL.js} +1 -1
- package/dist/{chunk-VHMDWRDG.js → chunk-4BPZJR4Z.js} +4 -4
- package/dist/{chunk-UE7ART6X.js → chunk-4MXKXHLW.js} +1 -1
- package/dist/{chunk-JKAAKE4Z.js → chunk-4R44E7HN.js} +1 -1
- package/dist/chunk-5HNQIMGW.js +1 -0
- package/dist/chunk-5S6IZ6PY.js +2 -0
- package/dist/chunk-6BO4QHKA.js +1 -0
- package/dist/{chunk-25V5XMWB.js → chunk-AGI46TSQ.js} +1 -1
- package/dist/{chunk-2CT5SN2L.js → chunk-BZLDCASY.js} +1 -1
- package/dist/{chunk-OA2YJN22.js → chunk-DWDYLKVW.js} +1 -1
- package/dist/{chunk-6B7L4NZE.js → chunk-EFHSRPW7.js} +6 -6
- package/dist/{chunk-RTD5D35M.js → chunk-FBF767WP.js} +1 -1
- package/dist/{chunk-NGZF4YJS.js → chunk-FD2ZGGCQ.js} +1 -1
- package/dist/chunk-H4YHIOCT.js +7 -0
- package/dist/{chunk-ZI54C2AO.js → chunk-HRGIHWYH.js} +1 -1
- package/dist/{chunk-HDISUL3F.js → chunk-IKNWNGLY.js} +1 -1
- package/dist/{chunk-NRIMJMTF.js → chunk-KO4DM2AV.js} +8 -8
- package/dist/{chunk-6KMR5PKQ.js → chunk-KW35SWG6.js} +5 -5
- package/dist/{chunk-NI5QWBZK.js → chunk-L6VNI4DN.js} +1 -1
- package/dist/chunk-NSC4VWV2.js +1 -0
- package/dist/chunk-P5LI5DL3.js +1 -0
- package/dist/chunk-PSQPKK6H.js +97 -0
- package/dist/chunk-PUH3TSPC.js +1 -0
- package/dist/chunk-QFDTKOYS.js +2649 -0
- package/dist/chunk-QIPW3G2H.js +1 -0
- package/dist/chunk-QVFIR64T.js +10 -0
- package/dist/{chunk-AICCXYY5.js → chunk-R3Z4LY3O.js} +1 -1
- package/dist/chunk-RKFTUIZ4.js +4 -0
- package/dist/chunk-ROOPODG6.js +2 -0
- package/dist/{chunk-COOVCORC.js → chunk-SVO2GGTV.js} +1 -1
- package/dist/chunk-TFFNHWXY.js +4 -0
- package/dist/chunk-TJ3MDZMC.js +6 -0
- package/dist/{chunk-DJH2CH42.js → chunk-UHIN3RS6.js} +1 -1
- package/dist/chunk-UOTOJJI4.js +681 -0
- package/dist/chunk-VODNLROY.js +1 -0
- package/dist/{chunk-3WQ5TYCO.js → chunk-X7MDTBX5.js} +1 -1
- package/dist/{chunk-RPM67N7A.js → chunk-XHUM372O.js} +1 -1
- package/dist/chunk-YLLCZMKP.js +2 -0
- package/dist/{chunk-4VSQNSGH.js → chunk-Z2M2XCIB.js} +1 -1
- package/dist/chunk-ZXQC36NJ.js +1 -0
- package/dist/{create-P4XJVZCL.js → create-ZRUQ3KNZ.js} +1 -1
- package/dist/{demo-kit-ALW6OSQV.js → demo-kit-QNGY4KQ5.js} +1 -1
- package/dist/{doctor-PFN6KB6P.js → doctor-7V7LJLHX.js} +1 -1
- package/dist/{dotnet-webapi-clean-6Z4EXEJY.js → dotnet-webapi-clean-GXTNZMKO.js} +1 -1
- package/dist/{goal-lifecycle-BDWTWS55.js → goal-lifecycle-EM4DUJCR.js} +1 -1
- package/dist/{goal-pack-5JDNZFKV.js → goal-pack-YMWZHAH6.js} +1 -1
- package/dist/{gofiber-standard-TDJQIVQZ.js → gofiber-standard-PFBIAMGR.js} +1 -1
- package/dist/{gogin-standard-UEF3IHSJ.js → gogin-standard-DW5GL7YG.js} +1 -1
- package/dist/index.d.ts +12 -6
- package/dist/index.js +255 -253
- package/dist/{pipeline-OUYS4ZYV.js → pipeline-6MBH3MU2.js} +1 -1
- package/dist/platform-capabilities-RWOWND5Q.js +1 -0
- package/dist/{project-agent-entry-75WO3QWP.js → project-agent-entry-ZXAE2MAJ.js} +1 -1
- package/dist/{project-intelligence-lens-JCHFOIA7.js → project-intelligence-lens-NBTPOK2R.js} +1 -1
- package/dist/{project-test-coverage-3P5FH6E5.js → project-test-coverage-HOZC72EK.js} +1 -1
- package/dist/proof-carrying-change-WJFAKK3C.js +1 -0
- package/dist/{pythonRapidkitExec-UMFLDIYR.js → pythonRapidkitExec-S35OEIEF.js} +1 -1
- package/dist/{rust-axum-4TRVPFMB.js → rust-axum-L7UAYARA.js} +1 -1
- package/dist/{springboot-standard-COWL75GT.js → springboot-standard-CZH24KWD.js} +1 -1
- package/dist/verified-goal-B7EX2PBE.js +1 -0
- package/dist/{workspace-CBQDOUSH.js → workspace-EBPYCSEM.js} +1 -1
- package/dist/{workspace-agent-sync-RTOTO3DY.js → workspace-agent-sync-Y4F6FBBC.js} +1 -1
- package/dist/{workspace-context-STRZO2N3.js → workspace-context-Y7F7GJCQ.js} +1 -1
- package/dist/{workspace-contract-PMHUUKFM.js → workspace-contract-XJMWMVQE.js} +1 -1
- package/dist/{workspace-explain-CATMJUMN.js → workspace-explain-T2J5ZLY7.js} +1 -1
- package/dist/{workspace-foundation-OULCDCXG.js → workspace-foundation-2UP6IMTH.js} +1 -1
- package/dist/{workspace-graph-stream-Q55CI4K4.js → workspace-graph-stream-MZVL3OCX.js} +1 -1
- package/dist/workspace-graph-token-efficiency-WF6TGSK7.js +1 -0
- package/dist/{workspace-intelligence-3RPZRWSF.js → workspace-intelligence-FZRQIFFM.js} +1 -1
- package/dist/{workspace-intelligence-benchmark-R5MEGJQS.js → workspace-intelligence-benchmark-V6AEVDMB.js} +1 -1
- package/dist/{workspace-intelligence-runner-BNZUYUUN.js → workspace-intelligence-runner-IXT62JG7.js} +1 -1
- package/dist/{workspace-knowledge-graph-VJLD35ES.js → workspace-knowledge-graph-EFC4TUDZ.js} +1 -1
- package/dist/workspace-knowledge-graph-query-BROIV27M.js +1 -0
- package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +1 -0
- package/dist/{workspace-mcp-serve-67NTYD67.js → workspace-mcp-serve-C42UUU7W.js} +1 -1
- package/dist/{workspace-model-6TKZMNEF.js → workspace-model-72SJ6WXT.js} +1 -1
- package/dist/{workspace-onboarding-7V7EH3RH.js → workspace-onboarding-TFDAIHTS.js} +1 -1
- package/dist/{workspace-registry-summary-ILVO7DEU.js → workspace-registry-summary-ZNTXSUI4.js} +1 -1
- package/dist/{workspace-repair-engine-2VGFB3DJ.js → workspace-repair-engine-542TAL3Z.js} +1 -1
- package/dist/workspace-run-NAPJYNSZ.js +1 -0
- package/dist/{workspace-verify-VQWYDAF2.js → workspace-verify-UXKENOQU.js} +1 -1
- package/dist/{workspace-watch-2Z636HWS.js → workspace-watch-DV5AHLOK.js} +1 -1
- package/docs/README.md +2 -2
- package/docs/agent-framework-adapters.md +190 -46
- package/docs/ci-workflows.md +37 -14
- package/docs/commands-reference.md +30 -14
- package/docs/creating-workspaces-and-projects.md +30 -10
- package/docs/doctor-command.md +6 -0
- package/docs/native-kit-baselines.md +4 -0
- package/docs/workspace-run.md +10 -0
- package/package.json +7 -4
- package/scripts/enterprise-package-smoke.mjs +98 -5
- package/dist/analyze-Z3EZNJRI.js +0 -1
- package/dist/autopilot-release-T6XFRWZT.js +0 -1
- package/dist/capabilities-command-VK3LQLP2.js +0 -1
- package/dist/chunk-566NQQTJ.js +0 -97
- package/dist/chunk-5EEXLM45.js +0 -1
- package/dist/chunk-65AE7EC5.js +0 -2
- package/dist/chunk-6NSJBKKK.js +0 -4
- package/dist/chunk-7NKM6EHE.js +0 -7
- package/dist/chunk-ABUSBLBH.js +0 -1
- package/dist/chunk-BR6QIYQS.js +0 -1
- package/dist/chunk-CMLLERGG.js +0 -418
- package/dist/chunk-DFREJHG7.js +0 -1
- package/dist/chunk-FU6SQ2ND.js +0 -1
- package/dist/chunk-M6DVNC6X.js +0 -2
- package/dist/chunk-O5XQP5E7.js +0 -1
- package/dist/chunk-OH6LV5JP.js +0 -6
- package/dist/chunk-PTI743SC.js +0 -7
- package/dist/chunk-QBKOPXKC.js +0 -1
- package/dist/chunk-RGNCL5OB.js +0 -1
- package/dist/chunk-VJQPIH2S.js +0 -681
- package/dist/chunk-WPPRUFJW.js +0 -4
- package/dist/chunk-ZKYH44ER.js +0 -1
- package/dist/platform-capabilities-DB4BZPTD.js +0 -1
- package/dist/proof-carrying-change-LAYV4LTI.js +0 -1
- package/dist/verified-goal-75KGBWTE.js +0 -1
- package/dist/workspace-graph-token-efficiency-YHXFGH3Z.js +0 -1
- package/dist/workspace-knowledge-graph-query-TT2KK3SF.js +0 -1
- package/dist/workspace-knowledge-graph-snapshot-TQAKDDUA.js +0 -1
- package/dist/workspace-run-X7KV6MIT.js +0 -1
|
@@ -12,23 +12,31 @@ existing project ---/ |
|
|
|
12
12
|
-> Workspai Context, Goal, PCC, and Verify
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
Microsoft Agent Framework is the first
|
|
15
|
+
Microsoft Agent Framework is the first adapter implementation of this
|
|
16
16
|
foundation. Its Python and .NET adapters are intentionally separate because
|
|
17
17
|
their package graphs, runtime requirements, entrypoints, and verification
|
|
18
|
-
commands differ. Both
|
|
19
|
-
manifest
|
|
20
|
-
and are bound into the reviewed release-admission inventory.
|
|
18
|
+
commands differ. Both become available for governed attachment only after the
|
|
19
|
+
exact manifest and release baseline pass the required Linux, macOS, and Windows
|
|
20
|
+
conformance lanes and are bound into the reviewed release-admission inventory.
|
|
21
|
+
Per-platform semantic implementation digests accompany that evidence for
|
|
22
|
+
traceability, but do not act as runtime authorization locks.
|
|
23
|
+
|
|
24
|
+
OpenAI Agents SDK adapters for Python and TypeScript are implemented in the
|
|
25
|
+
same registry and lifecycle. They become Create/Attach kits only after their
|
|
26
|
+
complete cross-platform matrix is reviewed into that inventory. Public
|
|
27
|
+
commands fail closed rather than silently substituting Microsoft, OpenAI, or
|
|
28
|
+
another runtime.
|
|
21
29
|
|
|
22
30
|
## Published contracts
|
|
23
31
|
|
|
24
|
-
| Contract | Purpose
|
|
25
|
-
| ------------------------------------------------------------------------------ |
|
|
26
|
-
| `contracts/agent-framework-capabilities.v1.json` | Normative ownership, capability, lifecycle, security, versioning, and admission rules
|
|
27
|
-
| `contracts/workspace-intelligence/agent-framework-adapter-manifest.v1.json` | JSON Schema for one framework/version adapter declaration
|
|
28
|
-
| `contracts/workspace-intelligence/agent-framework-conformance-report.
|
|
29
|
-
| `contracts/workspace-intelligence/agent-framework-change-plan.v1.json` | Portable, mutation-free scaffold or attach plan returned to the host
|
|
30
|
-
| `contracts/workspace-intelligence/agent-framework-ownership-receipt.v1.json` | Hash-bound proof of the files Workspai may safely refresh
|
|
31
|
-
| `contracts/workspace-intelligence/agent-framework-admission-candidate.
|
|
32
|
+
| Contract | Purpose |
|
|
33
|
+
| ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
|
34
|
+
| `contracts/agent-framework-capabilities.v1.json` | Normative ownership, capability, lifecycle, security, versioning, and admission rules |
|
|
35
|
+
| `contracts/workspace-intelligence/agent-framework-adapter-manifest.v1.json` | JSON Schema for one framework/version adapter declaration |
|
|
36
|
+
| `contracts/workspace-intelligence/agent-framework-conformance-report.v2.json` | JSON Schema binding reproducible adapter evidence to manifest and implementation digests |
|
|
37
|
+
| `contracts/workspace-intelligence/agent-framework-change-plan.v1.json` | Portable, mutation-free scaffold or attach plan returned to the host |
|
|
38
|
+
| `contracts/workspace-intelligence/agent-framework-ownership-receipt.v1.json` | Hash-bound proof of the files Workspai may safely refresh |
|
|
39
|
+
| `contracts/workspace-intelligence/agent-framework-admission-candidate.v2.json` | Review-pending, digest-bound index of the complete cross-platform evidence matrix |
|
|
32
40
|
|
|
33
41
|
The schemas are also discoverable through
|
|
34
42
|
`contracts/published-contract-catalog.v1.json` and the extension compatibility
|
|
@@ -88,14 +96,15 @@ verified from the Microsoft source tree:
|
|
|
88
96
|
|
|
89
97
|
| Adapter | Tested framework | Runtime | Authored detection |
|
|
90
98
|
| ---------------------------------- | ---------------- | --------------- | ------------------------------------------ |
|
|
91
|
-
| `microsoft-agent-framework-python` | `1.
|
|
92
|
-
| `microsoft-agent-framework-dotnet` | `1.
|
|
99
|
+
| `microsoft-agent-framework-python` | `1.18.0` | Python `>=3.10` | `agent-framework` PyPI package family |
|
|
100
|
+
| `microsoft-agent-framework-dotnet` | `1.21.0` | .NET `>=8.0` | `Microsoft.Agents.AI` NuGet package family |
|
|
93
101
|
|
|
94
102
|
The first provider profile pins its integration independently: Python uses
|
|
95
|
-
`agent-framework-foundry` `1.
|
|
96
|
-
`Microsoft.Agents.AI.Foundry` `1.
|
|
97
|
-
`Microsoft.Agents.AI` `1.
|
|
98
|
-
misrepresented as framework stability.
|
|
103
|
+
`agent-framework-foundry` `1.13.0`, while .NET uses
|
|
104
|
+
`Microsoft.Agents.AI.Foundry` `1.21.0-preview.260911.1` over the stable
|
|
105
|
+
`Microsoft.Agents.AI` `1.21.0` core. Preview integration status is not
|
|
106
|
+
misrepresented as framework stability. The dedicated .NET test project pins
|
|
107
|
+
`Microsoft.NET.Test.Sdk` `18.10.0` and `xunit.v3.mtp-v2` `4.0.1`.
|
|
99
108
|
|
|
100
109
|
Each adapter implements detection, scaffold and attach planning, managed-file
|
|
101
110
|
rendering, project context, validation, and runtime resolution. It never
|
|
@@ -108,16 +117,38 @@ Generated starter files use an isolated `agents/<instance>` root and keep
|
|
|
108
117
|
adapter state under `.workspai/agent-frameworks/<adapter>/<instance>.json`.
|
|
109
118
|
That instance contains the only runtime dependency manifest; the project root
|
|
110
119
|
does not receive an empty Python or .NET manifest that could be mistaken for a
|
|
111
|
-
second executable unit.
|
|
120
|
+
second executable unit. Python and .NET starters resolve bounded context from
|
|
121
|
+
the directory that owns `agents/<instance>/`. They do not use process cwd.
|
|
122
|
+
`workspace run start` executes from the agent package directory and still
|
|
123
|
+
finds `.workspai/reports/project-context-agent.json` at the project root.
|
|
124
|
+
Loaders share the OpenAI containment contract: canonical path walk, regular-file
|
|
125
|
+
open, 128 KiB cap, UTF-8 JSON, and `schemaVersion: project-context-agent.v1`.
|
|
126
|
+
The Python starter is pip-editable (`[build-system]` + setuptools modules) and
|
|
127
|
+
uses the official Foundry hello-world `Agent(client=FoundryChatClient(...))`
|
|
128
|
+
pattern with three read-only documented tools: `describe_workspai_context`,
|
|
129
|
+
`read_workspai_project_summary`, and `list_workspai_supported_commands`. The
|
|
130
|
+
.NET starter uses `AIProjectClient.AsAIAgent` plus `AIFunctionFactory.Create`,
|
|
131
|
+
enables `RestorePackagesWithLockFile`, and does not emit invented NuGet lock
|
|
132
|
+
hashes. Neither starter pastes admitted JSON into instructions; live
|
|
133
|
+
entrypoints stream stdout and accept a prompt from argv or stdin. Neither
|
|
134
|
+
starter hardcodes a Foundry model name; `FOUNDRY_MODEL` is
|
|
135
|
+
required. `DefaultAzureCredential` remains the local development convenience
|
|
136
|
+
Microsoft documents; generated READMEs tell production hosts to prefer
|
|
137
|
+
`ManagedIdentityCredential`. Adapters remain `preview`. Unsupported Microsoft
|
|
138
|
+
primitives (durable workflows, MCP, HITL loops, hosted tools) stay out of the
|
|
139
|
+
generated first-version scaffold.
|
|
140
|
+
Workspace Model reports these projects as `agent`,
|
|
112
141
|
retains `microsoft-agent-framework` as their framework identity, and reports
|
|
113
142
|
only lifecycle stages backed by concrete manifests, entrypoints, tests, or an
|
|
114
143
|
owned project runner.
|
|
115
144
|
Each starter also includes credentialless tests for the bounded context
|
|
116
|
-
boundary and
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
145
|
+
boundary, allowlisted views, and Azure-shaped redaction, plus an
|
|
146
|
+
environment-name example with no secret values. Python context
|
|
147
|
+
tests isolate the operational context file and restore it afterward; they stay
|
|
148
|
+
dependency-free unless `agent-framework` is installed for the optional
|
|
149
|
+
LocalChatClient loop. .NET uses a separately pinned test project. The conformance
|
|
150
|
+
matrix executes these tests in addition to compiling and exercising the
|
|
151
|
+
deterministic framework lifecycle.
|
|
121
152
|
Existing user-authored files are blockers, never overwrite targets. A managed
|
|
122
153
|
comment alone does not prove ownership: refresh also requires the previous
|
|
123
154
|
Workspai ownership receipt, which is bound to the exact adapter-manifest digest;
|
|
@@ -126,18 +157,100 @@ Provider credentials remain environment references. The first provider profile u
|
|
|
126
157
|
Microsoft Foundry, but provider identity is not part of framework identity and
|
|
127
158
|
additional profiles must preserve the same security boundary.
|
|
128
159
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
160
|
+
## OpenAI Agents SDK baseline
|
|
161
|
+
|
|
162
|
+
The built-in OpenAI adapters pin independently verified SDK baselines. They do
|
|
163
|
+
not reuse Microsoft detection, kits, or model-provider defaults.
|
|
164
|
+
|
|
165
|
+
| Adapter | Tested framework | Runtime | Authored detection |
|
|
166
|
+
| -------------------------- | ---------------- | --------------- | ---------------------------------- |
|
|
167
|
+
| `openai-agents-python` | `0.22.2` | Python `>=3.10` | exact PyPI package `openai-agents` |
|
|
168
|
+
| `openai-agents-typescript` | `0.18.0` | Node.js `>=22` | exact npm package `@openai/agents` |
|
|
169
|
+
|
|
170
|
+
The TypeScript starter also pins peer `zod` `4.6.5`, TypeScript `5.9.3`, and
|
|
171
|
+
`@types/node` `22.20.3`. The `openai` PyPI or npm package alone is not this
|
|
172
|
+
framework. Generated markers under `.workspai/agent-frameworks/` cannot select
|
|
173
|
+
it.
|
|
174
|
+
|
|
175
|
+
Generated loaders resolve the Workspai project as the directory that owns
|
|
176
|
+
`agents/<instance>/`. They do not use process cwd, unbounded ancestor search,
|
|
177
|
+
or a copied context file inside the agent package. Canonical containment,
|
|
178
|
+
a regular-file open (`O_NOFOLLOW` when the platform provides it), the 128 KiB
|
|
179
|
+
cap, UTF-8 JSON, and `schemaVersion: project-context-agent.v1` are enforced in
|
|
180
|
+
the starter. Generation, freshness, and integrity remain host-owned agent-sync
|
|
181
|
+
work. Internal symlinks, including Windows reparse points treated as links, are
|
|
182
|
+
allowed only when every resolved hop stays inside the project root. Diagnostics
|
|
183
|
+
do not include file contents.
|
|
184
|
+
|
|
185
|
+
The loader walk is not an atomic open. Between `lstat` of one hop and `open` of
|
|
186
|
+
the next, a local actor who can replace a path component may still race the
|
|
187
|
+
walk. The bound we claim, and only that bound, is: after a successful open with
|
|
188
|
+
`O_NOFOLLOW` when the kernel provides it, that file descriptor is `fstat`'d and
|
|
189
|
+
at most 128 KiB is read from that descriptor. This is not a proof of complete
|
|
190
|
+
TOCTOU immunity, of Windows junction behavior on every host, or of
|
|
191
|
+
enterprise-grade isolation.
|
|
192
|
+
|
|
193
|
+
Claimed capabilities are conservative and independently evidenced:
|
|
194
|
+
|
|
195
|
+
- native: `single-agent`, `typed-tools`, `local-execution`
|
|
196
|
+
- conditional: `telemetry` (defaults off; `WORKSPAI_AGENT_TRACING=1` opts in;
|
|
197
|
+
`OPENAI_AGENTS_DISABLE_TRACING=1|true` keeps tracing off even if the opt-in
|
|
198
|
+
is set), `provider-neutral-models` (starter only reads `OPENAI_MODEL` /
|
|
199
|
+
`OPENAI_DEFAULT_MODEL`)
|
|
200
|
+
- unsupported in this version: handoffs, MCP, sessions/resume, voice, sandbox,
|
|
201
|
+
hosted tools, and human-approval loops
|
|
202
|
+
|
|
203
|
+
Python cancellation uses `Runner.max_turns` and `ModelSettings.timeout` from
|
|
204
|
+
`openai-agents` `0.22.2`. `ModelSettings.timeout` is a per-model-request
|
|
205
|
+
timeout applied only on the live model path. Injected `ScriptedModel` runs omit
|
|
206
|
+
it because that setting hung the official test double on Python 3.13.
|
|
207
|
+
TypeScript cancellation uses `maxTurns` plus `AbortSignal` from
|
|
208
|
+
`@openai/agents` `0.18.0`. Those SDK controls are not a Workspai-owned timeout
|
|
209
|
+
service. Workspai still owns mutation admission and verification; a successful
|
|
210
|
+
model run is not verified evidence.
|
|
211
|
+
|
|
212
|
+
Generated starters do not paste `project-context-agent.json` into model
|
|
213
|
+
instructions. They expose three read-only tools over allowlisted views:
|
|
214
|
+
context size and `schemaVersion`, workspace/project identity (including
|
|
215
|
+
`boundedGraphSearch` as a pointer, not a shell), and the admitted command
|
|
216
|
+
surface. Live Python uses `Runner.run_streamed`; live TypeScript streams
|
|
217
|
+
`Runner.run({ stream: true })`. Credentialless ScriptedModel tests stay on
|
|
218
|
+
the non-stream `run` path. A prompt is taken from argv or stdin.
|
|
219
|
+
|
|
220
|
+
Generated OpenAI context tests copy the operational
|
|
221
|
+
`.workspai/reports/project-context-agent.json` aside for the suite and restore
|
|
222
|
+
it afterward. A green test run is not allowed to delete or replace that host
|
|
223
|
+
artifact.
|
|
224
|
+
|
|
225
|
+
Create lists every published agent kit under **AI Agent**, including
|
|
226
|
+
`agent.openai.python` and `agent.openai.typescript`. That picker is the
|
|
227
|
+
published catalog: it is not filtered by release-admission digest match or
|
|
228
|
+
workspace profile. A later adapter-manifest change must not hide a kit.
|
|
229
|
+
Create and Attach still refuse a kit whose adapter is not release-admitted;
|
|
230
|
+
visibility in the picker is not permission to write a blocked adapter.
|
|
231
|
+
Attach still requires `--framework openai-agents` when the
|
|
232
|
+
runtime is shared. OpenAI adapters are labeled `stable`; release admission
|
|
233
|
+
remains blocked until the exact v2 cross-platform candidate is promoted.
|
|
234
|
+
Handoffs, MCP, sessions, voice, sandbox, and approval loops stay unsupported.
|
|
235
|
+
Microsoft adapters remain `preview`.
|
|
236
|
+
|
|
237
|
+
A path-filtered PR gate compiles only the affected Microsoft or OpenAI adapter
|
|
238
|
+
family on Linux. Shared lifecycle, security, registry, admission, and contract
|
|
239
|
+
changes select both families; documentation-only edits do not run adapter
|
|
240
|
+
conformance. The complete twelve-lane matrix is an explicit release-
|
|
241
|
+
qualification operation: it compiles Microsoft Python/.NET and OpenAI
|
|
242
|
+
Python/TypeScript on Linux, macOS, and Windows. Every full-qualification lane
|
|
243
|
+
records all 18 mandatory checks, the exact runtime and framework baseline,
|
|
244
|
+
digests of the adapter manifest and semantic implementation, and one bounded
|
|
245
|
+
evidence file per check. Reports are retained as CI artifacts for review. A
|
|
246
|
+
final job validates every evidence path and emits an admission candidate only
|
|
247
|
+
when all three operating-system lanes pass for every built-in adapter.
|
|
135
248
|
Python conformance is pinned to 3.10.11, the final Python 3.10 release with
|
|
136
249
|
cross-platform binary installers; this provides one reproducible minimum-runtime
|
|
137
250
|
baseline while the adapter continues to declare Python `>=3.10` support.
|
|
138
251
|
|
|
139
252
|
After verification, CI emits one admission-candidate artifact. It binds the
|
|
140
|
-
source commit, CLI version, adapter
|
|
253
|
+
source commit, CLI version, adapter manifest and implementation digests, lane reports, and every
|
|
141
254
|
evidence file by SHA-256. Its status is always `pending`: successful CI produces
|
|
142
255
|
reviewable evidence, not release authority. Only the protected version-update
|
|
143
256
|
branch may convert that candidate into the exact release-admission inventory,
|
|
@@ -148,11 +261,16 @@ blocked when callers provide neither raw conformance reports nor explicit
|
|
|
148
261
|
permission to use the bundled reviewed release inventory. User-facing commands
|
|
149
262
|
enable that inventory deliberately and fail closed if an adapter version,
|
|
150
263
|
manifest digest, framework baseline, runtime, or platform list has changed.
|
|
264
|
+
Semantic implementation digests remain in lane reports, candidates, and the
|
|
265
|
+
reviewed inventory as audit provenance. They are verified during full
|
|
266
|
+
qualification and promotion, but are deliberately not runtime authorization:
|
|
267
|
+
routine implementation changes are guarded by affected-family tests instead
|
|
268
|
+
of requiring a hand-edited admission digest for every source edit.
|
|
151
269
|
|
|
152
270
|
## Attach an agent runtime
|
|
153
271
|
|
|
154
|
-
Build current Workspace Intelligence first, then inspect
|
|
155
|
-
|
|
272
|
+
Build current Workspace Intelligence first, then inspect adapter admission
|
|
273
|
+
state:
|
|
156
274
|
|
|
157
275
|
```bash
|
|
158
276
|
npx workspai workspace intelligence run --for-agent generic --strict --json
|
|
@@ -169,6 +287,11 @@ npx workspai agent framework plan \
|
|
|
169
287
|
--name support-agent
|
|
170
288
|
```
|
|
171
289
|
|
|
290
|
+
When more than one admitted framework shares a runtime, pass `--framework`
|
|
291
|
+
explicitly. Workspai does not guess or fall back. `--runtime python` without
|
|
292
|
+
`--framework` now requires an explicit choice because Microsoft Agent Framework
|
|
293
|
+
and OpenAI Agents SDK are both admitted.
|
|
294
|
+
|
|
172
295
|
The interactive attach command displays the same plan and asks before granting
|
|
173
296
|
its filesystem effect. Automation must opt in with `--yes` and records the
|
|
174
297
|
identity supplied by `--granted-by`:
|
|
@@ -203,12 +326,29 @@ npx workspai create project agent.microsoft.python support-agent
|
|
|
203
326
|
npx workspai create project agent.microsoft.dotnet operations-agent
|
|
204
327
|
```
|
|
205
328
|
|
|
206
|
-
Create writes a minimal runtime identity, registers the project,
|
|
207
|
-
|
|
208
|
-
|
|
329
|
+
Create writes a minimal runtime identity, registers the project, seals a
|
|
330
|
+
Model/Graph baseline so the adapter can plan, applies the adapter-owned scaffold
|
|
331
|
+
inside that Change, then re-observes Model, Graph, and project grounding against
|
|
332
|
+
the nested runtime. The interactive wizard lists every published kit under the
|
|
333
|
+
**AI Agent** category. Scaffolding still requires the selected adapter to be
|
|
334
|
+
release-admitted. A failed scaffold
|
|
209
335
|
rolls back the new directory and workspace registration. Detection itself
|
|
210
336
|
remains read-only and never authorizes writes.
|
|
211
337
|
|
|
338
|
+
The nested instance is the only executable unit. `workspace run --plan` should
|
|
339
|
+
show `agents/<instance>` with compile, standard-library `unittest` or the
|
|
340
|
+
dedicated .NET test project, and `python3 main.py` / `dotnet run` as
|
|
341
|
+
evidence-backed stages. Create does not install packages or call a model. The
|
|
342
|
+
Change stays `open` until:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
npx workspai workspace intelligence run --for-agent generic --strict --json
|
|
346
|
+
npx workspai change verify --change <change-id> --json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
`--strict` is for workspace readiness blockers in other projects. Independent
|
|
350
|
+
verification of this Change is `change verify`.
|
|
351
|
+
|
|
212
352
|
A workspace may contain multiple independently scoped framework adapters. A
|
|
213
353
|
project that deliberately connects two frameworks must declare that bridge;
|
|
214
354
|
Workspai never infers cross-framework execution from coincidental dependencies.
|
|
@@ -257,8 +397,12 @@ and unadvertised runtimes fail closed.
|
|
|
257
397
|
|
|
258
398
|
The generic boundary was hardened against two deliberately different
|
|
259
399
|
integration shapes: a filesystem-first Node.js framework and the
|
|
260
|
-
multi-language Microsoft Agent Framework.
|
|
261
|
-
|
|
400
|
+
multi-language Microsoft Agent Framework. OpenAI Agents SDK Python and
|
|
401
|
+
TypeScript adapters now share that same create, attach, detection, ownership,
|
|
402
|
+
and verification host. They are selectable for Create and Attach only after
|
|
403
|
+
their exact manifest digest, framework baseline, runtime, and platform list
|
|
404
|
+
enter the reviewed release-admission inventory. Microsoft adapters remain
|
|
405
|
+
selectable while their current inventory entries stay valid.
|
|
262
406
|
|
|
263
407
|
## Implementation sequence
|
|
264
408
|
|
|
@@ -267,13 +411,13 @@ implemented, and their preview state still prevents premature selection.
|
|
|
267
411
|
2. Use the framework-neutral registry, detector, and bounded manifest loader.
|
|
268
412
|
3. Review the Microsoft Python and .NET digest-bound evidence produced by the
|
|
269
413
|
full conformance matrix.
|
|
270
|
-
4.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
414
|
+
4. Review the OpenAI Python and TypeScript digest-bound evidence produced by
|
|
415
|
+
the same matrix; do not treat local Linux success as multi-OS admission.
|
|
416
|
+
5. Keep automated upstream discovery separate from release authority: report
|
|
417
|
+
newer registry versions, then update pins only through a reviewed change.
|
|
418
|
+
Re-run the full matrix before treating a new pin as independently proven.
|
|
275
419
|
|
|
276
420
|
AutoGen is not planned as a new-project target because Microsoft Agent
|
|
277
|
-
Framework is its supported successor path. Eve
|
|
278
|
-
|
|
279
|
-
|
|
421
|
+
Framework is its supported successor path. Eve and LangGraph are not
|
|
422
|
+
advertised; each requires its own adapter, tested baseline, and conformance
|
|
423
|
+
evidence.
|
package/docs/ci-workflows.md
CHANGED
|
@@ -4,19 +4,42 @@ Map of GitHub Actions workflows in this repository. Use this when editing CI to
|
|
|
4
4
|
|
|
5
5
|
## Workflows
|
|
6
6
|
|
|
7
|
-
| Workflow
|
|
8
|
-
|
|
|
9
|
-
| Build / test matrix
|
|
10
|
-
| Workspace E2E matrix
|
|
11
|
-
| Windows bridge E2E
|
|
12
|
-
| E2E smoke
|
|
13
|
-
| Official generator smoke
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
7
|
+
| Workflow | Path | Purpose |
|
|
8
|
+
| ------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
9
|
+
| Build / test matrix | `.github/workflows/ci.yml` | Path-aware docs or full matrix validation plus the required `CI Gate` |
|
|
10
|
+
| Workspace E2E matrix | `.github/workflows/workspace-e2e-matrix.yml` | Cross-OS workspace lifecycle smoke; setup `--warm-deps`; cache/mirror ops |
|
|
11
|
+
| Windows bridge E2E | `.github/workflows/windows-bridge-e2e.yml` | Native Windows bridge and lifecycle checks |
|
|
12
|
+
| E2E smoke | `.github/workflows/e2e-smoke.yml` | Focused bridge regression smoke |
|
|
13
|
+
| Official generator smoke | `.github/workflows/frontend-generator-smoke.yml` | Contract-driven official-generator drift gate |
|
|
14
|
+
| Agent Framework matrix | `.github/workflows/agent-framework-conformance.yml` | Affected-family Linux PR gate plus manual twelve-lane release qualification and admission |
|
|
15
|
+
| Agent Framework discovery | `.github/workflows/agent-framework-version-discovery.yml` | Weekly PyPI/NuGet candidate report; no commit, PR, or contract rewrite |
|
|
16
|
+
| Security | `.github/workflows/security.yml` | Path-aware scanning plus the always-resolved `Security Gate` |
|
|
17
|
+
| Manual npm release | `.github/workflows/release-npm-manual.yml` | Maintainer-only release gate and publish workflow |
|
|
18
|
+
| Discord announcement | `.github/workflows/discord-release-announcement.yml` | Preview and publish one idempotent product-aware release announcement |
|
|
19
|
+
| Contributor onboarding | `.github/workflows/contributor-onboarding.yml` | Accepted-contributor onboarding automation |
|
|
20
|
+
| Contributor Hub | `.github/workflows/contributor-hub.yml` | Daily live issue-route freshness |
|
|
21
|
+
| Welcome | `.github/workflows/welcome.yml` | First-issue and first-contribution messages |
|
|
22
|
+
|
|
23
|
+
## Agent Framework workflows
|
|
24
|
+
|
|
25
|
+
Weekly `agent-framework-version-discovery` checks PyPI, NuGet, and npm, then stops at
|
|
26
|
+
a report and artifact. It does not commit, open a pull request, regenerate
|
|
27
|
+
Create contracts, or write `release-admissions.v2.json`. A human pin update
|
|
28
|
+
still has to pass the manual `full` mode of `agent-framework-conformance` on
|
|
29
|
+
Linux, macOS, and Windows for every built-in adapter runtime. Pull requests run
|
|
30
|
+
the faster Linux gate only for the affected Microsoft or OpenAI family; shared
|
|
31
|
+
agent-framework surfaces select both, while documentation-only changes skip the
|
|
32
|
+
specialized workflow. The full matrix compiles the nested `agents/primary`
|
|
33
|
+
runtime, runs credentialless context-boundary tests, and records manifest-bound
|
|
34
|
+
admission data plus semantic implementation provenance. Promotion requires the
|
|
35
|
+
candidate source commit to equal the checked-out promotion commit. An
|
|
36
|
+
implementation digest is audit evidence, not a runtime lock and not a manual
|
|
37
|
+
maintenance requirement after every routine adapter edit.
|
|
38
|
+
It never sets Foundry or OpenAI credentials. Only a reviewed admission on the protected
|
|
39
|
+
version-update branch can promote a green candidate.
|
|
40
|
+
|
|
41
|
+
The PR template at `.github/agent-framework-version-update.md` is for that
|
|
42
|
+
human pin update. It is not opened by the weekly discovery workflow.
|
|
20
43
|
|
|
21
44
|
## Change-aware validation
|
|
22
45
|
|
|
@@ -102,7 +125,7 @@ Validate or preview the current CLI announcement locally:
|
|
|
102
125
|
npm --workspace workspai run check:release-announcement
|
|
103
126
|
npm --workspace workspai run release:announcement -- \
|
|
104
127
|
--product workspai-cli \
|
|
105
|
-
--tag v0.
|
|
128
|
+
--tag v0.76.0 \
|
|
106
129
|
--markdown-output /tmp/workspai-discord-announcement.md
|
|
107
130
|
```
|
|
108
131
|
|
|
@@ -58,7 +58,7 @@ compatibility view. See [Workspai Live Activity](./workspace-live-activity.md).
|
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
60
|
npx workspai create # Guided create or existing-software ingestion
|
|
61
|
-
npx workspai create workspace <name> [--profile <profile>] [--yes] [--here|--output <parent-dir>] [--skip-python-engine] [--skip-git] [--dry-run] [--install-method <poetry|venv|pipx>]
|
|
61
|
+
npx workspai create workspace <name> [--profile <profile>] [--yes] [--here|--output <parent-dir>] [--skip-python-engine] [--skip-git] [--dry-run] [--json] [--install-method <poetry|venv|pipx>]
|
|
62
62
|
npx workspai bootstrap [--profile <profile>] [--ci] [--json] [--compliance-only]
|
|
63
63
|
npx workspai setup <python|node|go|java|dotnet|rust|php> [--warm-deps]
|
|
64
64
|
npx workspai pipeline [--json] [--strict] [--skip-verify] [--skip-analyze] [--skip-autopilot] [--autopilot-mode <audit|safe-fix|enforce>] [--agent-sync|--no-agent-sync]
|
|
@@ -80,11 +80,13 @@ npx workspai change resume --change <change-id> --to <authorized|executing|verif
|
|
|
80
80
|
npx workspai change abort --change <change-id> --reason <text> [--actor <identity>] [--json]
|
|
81
81
|
npx workspai change capsule validate --change <change-id> [--workspace <path>] [--json]
|
|
82
82
|
npx workspai change capsule export --change <change-id> --output <path> [--workspace <path>] [--json]
|
|
83
|
+
npx workspai create project agent.microsoft.python <name> [--agent-name <name>] [--skip-git]
|
|
84
|
+
npx workspai create project agent.microsoft.dotnet <name> [--agent-name <name>] [--skip-git]
|
|
83
85
|
npx workspai agent bootstrap [--project <path>] [--for-agent <host>] [--no-live-inputs] [--strict] [--json]
|
|
84
86
|
npx workspai agent framework list [--json]
|
|
85
|
-
npx workspai agent framework plan --project <name> --runtime <python|dotnet> --name <agent> [--goal <goal-id>] [--workspace <path>] [--json]
|
|
86
|
-
npx workspai agent framework attach --project <name> --runtime <python|dotnet> --name <agent> [-y] [--granted-by <identity>] [--workspace <path>] [--json]
|
|
87
|
-
npx workspai agent framework apply --change <change-id> --project <name> --runtime <python|dotnet> [--workspace <path>] [--json]
|
|
87
|
+
npx workspai agent framework plan --project <name> --runtime <python|dotnet|node> [--framework <id>] --name <agent> [--goal <goal-id>] [--workspace <path>] [--json]
|
|
88
|
+
npx workspai agent framework attach --project <name> --runtime <python|dotnet|node> [--framework <id>] --name <agent> [-y] [--granted-by <identity>] [--workspace <path>] [--json]
|
|
89
|
+
npx workspai agent framework apply --change <change-id> --project <name> --runtime <python|dotnet|node> [--framework <id>] [--workspace <path>] [--json]
|
|
88
90
|
```
|
|
89
91
|
|
|
90
92
|
Recommended CI:
|
|
@@ -273,16 +275,30 @@ Blocked receipts exit `2`; strict mode also maps degraded evidence to exit `2`.
|
|
|
273
275
|
See [Canonical-first agent entry](./agent-entry.md).
|
|
274
276
|
|
|
275
277
|
`agent framework` is the governed bridge between Workspai evidence and an
|
|
276
|
-
agent runtime. `list` exposes
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
278
|
+
agent runtime. `list` exposes every built-in adapter and its release-admission
|
|
279
|
+
state. In this CLI version Microsoft Python `1.18.0` and .NET `1.21.0` remain
|
|
280
|
+
`preview`. OpenAI Agents SDK Python `0.22.2` and TypeScript `0.18.0` are
|
|
281
|
+
labeled `stable`. Create and Attach require the reviewed v2 release inventory,
|
|
282
|
+
whose manifest, framework baseline, runtime, and platform claims were promoted
|
|
283
|
+
from the Linux, macOS, and Windows release matrix. Semantic implementation
|
|
284
|
+
digests remain audit provenance rather than runtime authorization. `plan`
|
|
285
|
+
creates or reuses a scoped Goal, begins a Proof-Carrying Change, and
|
|
286
|
+
attaches a hash-bound file plan without writing project files. `--runtime`
|
|
287
|
+
selects `python`, `dotnet`, or `node`. `--framework` selects the independent
|
|
288
|
+
framework id when more than one admitted adapter shares that runtime.
|
|
289
|
+
`attach` shows that plan and requires an
|
|
290
|
+
interactive confirmation or explicit `--yes` before granting the filesystem
|
|
291
|
+
effect and writing an isolated `agents/<name>` directory. `create project
|
|
292
|
+
agent.microsoft.python|dotnet` uses the same admitted lifecycle for a new
|
|
293
|
+
project: it registers the project, plans against a Model baseline, writes the
|
|
294
|
+
nested runtime, then re-observes Model/Graph before it claims Intelligence is
|
|
295
|
+
sealed. `create project agent.openai.python|typescript` uses the same admitted
|
|
296
|
+
lifecycle. Dependency installation, credentials, generated-code execution, and
|
|
297
|
+
model provider calls are never implied by that approval. `apply` is the
|
|
298
|
+
automation counterpart for a plan that was separately authorized with
|
|
299
|
+
`change authorize`. Any adapter, version, manifest, runtime, or platform drift
|
|
300
|
+
invalidates its bundled release admission until the complete conformance matrix
|
|
301
|
+
passes again. The generated Change remains open until `change verify`.
|
|
286
302
|
|
|
287
303
|
`workspace feedback record` is a non-interactive machine interface. It requires
|
|
288
304
|
exactly one JSON object on stdin and `--json`; an empty stdin or interactive TTY
|
|
@@ -16,8 +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 or
|
|
20
|
-
Spring Boot service, .NET API,
|
|
19
|
+
A **project** is an application, service, or governed agent, such as a FastAPI
|
|
20
|
+
API, Go service, Spring Boot service, .NET API, frontend application, or
|
|
21
|
+
Microsoft Agent Framework entrypoint.
|
|
21
22
|
|
|
22
23
|
The canonical commands are:
|
|
23
24
|
|
|
@@ -40,6 +41,7 @@ does not have exactly the same behavior.
|
|
|
40
41
|
| Create a project and use the current/default workspace behavior | `npx workspai create project gofiber.standard api` |
|
|
41
42
|
| Turn the current folder into a workspace before creating | `npx workspai create project gofiber.standard api --create-workspace --yes` |
|
|
42
43
|
| Create a project without workspace management | `npx workspai create project gofiber.standard api --no-workspace --yes` |
|
|
44
|
+
| Create a governed Microsoft Agent Framework project | `npx workspai create project agent.microsoft.python support-agent` |
|
|
43
45
|
| Preview a supported create plan | `npx workspai create project frontend.nextjs web --dry-run` |
|
|
44
46
|
|
|
45
47
|
# Creating a workspace
|
|
@@ -388,15 +390,33 @@ project metadata and performs the selected workspace registration.
|
|
|
388
390
|
|
|
389
391
|
## Agent Framework kits
|
|
390
392
|
|
|
391
|
-
| Kit | Runtime |
|
|
392
|
-
| ------------------------ | ------- |
|
|
393
|
-
| `agent.microsoft.python` | Python |
|
|
394
|
-
| `agent.microsoft.dotnet` | .NET |
|
|
393
|
+
| Kit | Runtime | Tested baseline | Layout |
|
|
394
|
+
| ------------------------ | ------- | --------------- | ------ |
|
|
395
|
+
| `agent.microsoft.python` | Python | `agent-framework-core` `1.18.0`, Foundry `1.13.0`, `azure-identity` `1.25.3` | Isolated `agents/<instance>/` with `pyproject.toml`, credentialless `unittest`, and `.env.example` |
|
|
396
|
+
| `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
|
+
| `agent.openai.python` | Python | `openai-agents` `0.22.2` | Isolated `agents/<instance>/` with pip-editable `pyproject.toml`, credentialless `unittest`, and `.env.example` |
|
|
398
|
+
| `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` |
|
|
395
399
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
+
Interactive `workspai create` shows these kits under **AI Agent** after
|
|
401
|
+
reviewed release admission. Agent kits require Workspace governance and therefore do not
|
|
402
|
+
accept `--no-workspace`. Optional `--agent-name` names the instance directory
|
|
403
|
+
(default `primary`). They do not install dependencies, call a model, or store
|
|
404
|
+
credentials. Exact versions are promoted only after the full Linux, macOS, and
|
|
405
|
+
Windows conformance matrix passes. Weekly registry discovery is report-only; it
|
|
406
|
+
cannot rewrite these pins.
|
|
407
|
+
|
|
408
|
+
Create does not emit an empty root `pyproject.toml` or `.csproj`. The nested
|
|
409
|
+
instance is the only Workspace Run unit. After Create, Model and Graph already
|
|
410
|
+
include that nested runtime. The generated Change still needs:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
npx workspai workspace intelligence run --for-agent generic --strict --json
|
|
414
|
+
npx workspai change verify --change <change-id> --json
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
`--strict` clears workspace-wide readiness blockers. `change verify` is the
|
|
418
|
+
independent proof for this scaffold. See
|
|
419
|
+
[Agent Framework Adapter Contract](./agent-framework-adapters.md).
|
|
400
420
|
|
|
401
421
|
## Desktop, extension, and additional backend generators
|
|
402
422
|
|
package/docs/doctor-command.md
CHANGED
|
@@ -775,6 +775,12 @@ 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 and OpenAI Agents SDK projects keep
|
|
779
|
+
`kind` as `agent`. Microsoft retains `microsoft-agent-framework`; OpenAI
|
|
780
|
+
retains `openai-agents`. Doctor discovers nested environment examples and
|
|
781
|
+
dependency manifests under `agents/primary` and aims Python/`uv`, Node
|
|
782
|
+
`npm --prefix`, or .NET repair commands at that runtime, not at a phantom
|
|
783
|
+
project-root manifest.
|
|
778
784
|
|
|
779
785
|
## Project JSON fields (AI/automation)
|
|
780
786
|
|
|
@@ -12,6 +12,10 @@ 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 and OpenAI Agents SDK kits are versioned
|
|
16
|
+
separately through the
|
|
17
|
+
[Agent Framework Adapter Contract](./agent-framework-adapters.md); they are
|
|
18
|
+
not native HTTP service generators.
|
|
15
19
|
|
|
16
20
|
## Current tested baseline
|
|
17
21
|
|
package/docs/workspace-run.md
CHANGED
|
@@ -48,6 +48,16 @@ nested directory is already an explicit workspace project, an aggregate parent
|
|
|
48
48
|
does not execute that child's runtime unit again. `--plan --json` exposes the
|
|
49
49
|
resulting ownership so operators can review the exact units before execution.
|
|
50
50
|
|
|
51
|
+
Microsoft Agent Framework projects keep their executable manifest under
|
|
52
|
+
`agents/<instance>/`. Workspace Run treats that nested `pyproject.toml` or
|
|
53
|
+
`.csproj` as its own unit (`python3 -m compileall .`,
|
|
54
|
+
`python3 -m unittest discover -s tests`, `python3 main.py`, or the matching
|
|
55
|
+
.NET commands). A Python unit with `main.py` uses `compileall` even when
|
|
56
|
+
`pyproject.toml` declares `[build-system]`; `python -m build` remains only for
|
|
57
|
+
packaging projects that have no agent entrypoint. An empty legacy root manifest is ignored only when it still
|
|
58
|
+
matches the exact older Workspai shell and a real `agents/primary` runtime
|
|
59
|
+
exists. Any user edit restores the root as an independent unit.
|
|
60
|
+
|
|
51
61
|
Planning and `init` do not require Doctor or release-readiness evidence. Real
|
|
52
62
|
`test`, `build`, and `start` runs enforce the `doctor-workspace` and `readiness`
|
|
53
63
|
gates by default. A failed gate prevents project commands from starting and is
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "workspai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.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": [
|
|
@@ -115,6 +115,8 @@
|
|
|
115
115
|
"test:runtime-contract": "node scripts/runtime-acceptance-matrix.mjs --contract-only",
|
|
116
116
|
"test:agent-framework:python": "tsx scripts/smoke-microsoft-agent-framework-adapter.ts --runtime python",
|
|
117
117
|
"test:agent-framework:dotnet": "tsx scripts/smoke-microsoft-agent-framework-adapter.ts --runtime dotnet",
|
|
118
|
+
"test:agent-framework:openai:python": "tsx scripts/smoke-openai-agents-adapter.ts --runtime python",
|
|
119
|
+
"test:agent-framework:openai:typescript": "tsx scripts/smoke-openai-agents-adapter.ts --runtime typescript",
|
|
118
120
|
"verify:agent-framework:matrix": "tsx scripts/verify-agent-framework-conformance.ts --reports test-results/agent-framework-conformance",
|
|
119
121
|
"discover:agent-framework:versions": "tsx scripts/discover-agent-framework-versions.ts",
|
|
120
122
|
"propose:agent-framework:versions": "tsx scripts/propose-agent-framework-version-update.ts",
|
|
@@ -123,6 +125,7 @@
|
|
|
123
125
|
"test:runtime-matrix:full": "node scripts/runtime-acceptance-matrix.mjs --full",
|
|
124
126
|
"test:real-world": "node scripts/real-world-qualification.mjs",
|
|
125
127
|
"test:real-world:enterprise": "node scripts/enterprise-workspace-qualification.mjs",
|
|
128
|
+
"test:graph-shadow": "node --import tsx scripts/graph-shadow-qualification.ts",
|
|
126
129
|
"check:english-text": "node ../../scripts/english-text-guard.mjs --all",
|
|
127
130
|
"lint": "corepack npm run check:english-text && eslint src --ext .ts",
|
|
128
131
|
"lint:fix": "eslint src --ext .ts --fix",
|
|
@@ -204,8 +207,8 @@
|
|
|
204
207
|
"@types/yazl": "^3.3.1",
|
|
205
208
|
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
206
209
|
"@typescript-eslint/parser": "^8.46.2",
|
|
207
|
-
"@vitest/coverage-v8": "^4.
|
|
208
|
-
"@vitest/ui": "^4.
|
|
210
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
211
|
+
"@vitest/ui": "^4.1.11",
|
|
209
212
|
"eslint": "^9.39.2",
|
|
210
213
|
"husky": "^9.1.7",
|
|
211
214
|
"lint-staged": "^15.5.2",
|
|
@@ -215,7 +218,7 @@
|
|
|
215
218
|
"tsx": "^4.20.6",
|
|
216
219
|
"typescript": "^5.5.0",
|
|
217
220
|
"vite-bundle-visualizer": "^1.2.1",
|
|
218
|
-
"vitest": "^4.
|
|
221
|
+
"vitest": "^4.1.11"
|
|
219
222
|
},
|
|
220
223
|
"optionalDependencies": {
|
|
221
224
|
"@rollup/rollup-win32-x64-msvc": "*"
|