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.
Files changed (138) hide show
  1. package/contracts/agent-framework-capabilities.v1.json +2 -2
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +12 -0
  3. package/contracts/create-planner-capabilities.v1.json +24 -0
  4. package/contracts/extension-cli-compatibility.v1.json +4 -2
  5. package/contracts/published-contract-catalog.v1.json +10 -0
  6. package/contracts/runtime-command-surface.v1.json +3 -1
  7. package/contracts/workspace-intelligence/agent-framework-admission-candidate.v2.json +217 -0
  8. package/contracts/workspace-intelligence/agent-framework-conformance-report.v2.json +274 -0
  9. package/contracts/workspace-intelligence-architecture.v1.json +5 -3
  10. package/dist/analyze-QVRVJB7I.js +1 -0
  11. package/dist/{artifact-remediation-plan-HD5K52UJ.js → artifact-remediation-plan-SRH2Q6N2.js} +1 -1
  12. package/dist/autopilot-release-DOGIETAT.js +1 -0
  13. package/dist/capabilities-command-FYBUVHZ7.js +1 -0
  14. package/dist/{chunk-SCKEFXF5.js → chunk-23CNBYIW.js} +1 -1
  15. package/dist/chunk-2DZLCINC.js +1 -0
  16. package/dist/{chunk-2GWQ6NZV.js → chunk-2I2A55RE.js} +1 -1
  17. package/dist/{chunk-W7I65IXY.js → chunk-3HXEPDFF.js} +2 -2
  18. package/dist/{chunk-2OCJKLTW.js → chunk-4BBFEHPL.js} +1 -1
  19. package/dist/{chunk-VHMDWRDG.js → chunk-4BPZJR4Z.js} +4 -4
  20. package/dist/{chunk-UE7ART6X.js → chunk-4MXKXHLW.js} +1 -1
  21. package/dist/{chunk-JKAAKE4Z.js → chunk-4R44E7HN.js} +1 -1
  22. package/dist/chunk-5HNQIMGW.js +1 -0
  23. package/dist/chunk-5S6IZ6PY.js +2 -0
  24. package/dist/chunk-6BO4QHKA.js +1 -0
  25. package/dist/{chunk-25V5XMWB.js → chunk-AGI46TSQ.js} +1 -1
  26. package/dist/{chunk-2CT5SN2L.js → chunk-BZLDCASY.js} +1 -1
  27. package/dist/{chunk-OA2YJN22.js → chunk-DWDYLKVW.js} +1 -1
  28. package/dist/{chunk-6B7L4NZE.js → chunk-EFHSRPW7.js} +6 -6
  29. package/dist/{chunk-RTD5D35M.js → chunk-FBF767WP.js} +1 -1
  30. package/dist/{chunk-NGZF4YJS.js → chunk-FD2ZGGCQ.js} +1 -1
  31. package/dist/chunk-H4YHIOCT.js +7 -0
  32. package/dist/{chunk-ZI54C2AO.js → chunk-HRGIHWYH.js} +1 -1
  33. package/dist/{chunk-HDISUL3F.js → chunk-IKNWNGLY.js} +1 -1
  34. package/dist/{chunk-NRIMJMTF.js → chunk-KO4DM2AV.js} +8 -8
  35. package/dist/{chunk-6KMR5PKQ.js → chunk-KW35SWG6.js} +5 -5
  36. package/dist/{chunk-NI5QWBZK.js → chunk-L6VNI4DN.js} +1 -1
  37. package/dist/chunk-NSC4VWV2.js +1 -0
  38. package/dist/chunk-P5LI5DL3.js +1 -0
  39. package/dist/chunk-PSQPKK6H.js +97 -0
  40. package/dist/chunk-PUH3TSPC.js +1 -0
  41. package/dist/chunk-QFDTKOYS.js +2649 -0
  42. package/dist/chunk-QIPW3G2H.js +1 -0
  43. package/dist/chunk-QVFIR64T.js +10 -0
  44. package/dist/{chunk-AICCXYY5.js → chunk-R3Z4LY3O.js} +1 -1
  45. package/dist/chunk-RKFTUIZ4.js +4 -0
  46. package/dist/chunk-ROOPODG6.js +2 -0
  47. package/dist/{chunk-COOVCORC.js → chunk-SVO2GGTV.js} +1 -1
  48. package/dist/chunk-TFFNHWXY.js +4 -0
  49. package/dist/chunk-TJ3MDZMC.js +6 -0
  50. package/dist/{chunk-DJH2CH42.js → chunk-UHIN3RS6.js} +1 -1
  51. package/dist/chunk-UOTOJJI4.js +681 -0
  52. package/dist/chunk-VODNLROY.js +1 -0
  53. package/dist/{chunk-3WQ5TYCO.js → chunk-X7MDTBX5.js} +1 -1
  54. package/dist/{chunk-RPM67N7A.js → chunk-XHUM372O.js} +1 -1
  55. package/dist/chunk-YLLCZMKP.js +2 -0
  56. package/dist/{chunk-4VSQNSGH.js → chunk-Z2M2XCIB.js} +1 -1
  57. package/dist/chunk-ZXQC36NJ.js +1 -0
  58. package/dist/{create-P4XJVZCL.js → create-ZRUQ3KNZ.js} +1 -1
  59. package/dist/{demo-kit-ALW6OSQV.js → demo-kit-QNGY4KQ5.js} +1 -1
  60. package/dist/{doctor-PFN6KB6P.js → doctor-7V7LJLHX.js} +1 -1
  61. package/dist/{dotnet-webapi-clean-6Z4EXEJY.js → dotnet-webapi-clean-GXTNZMKO.js} +1 -1
  62. package/dist/{goal-lifecycle-BDWTWS55.js → goal-lifecycle-EM4DUJCR.js} +1 -1
  63. package/dist/{goal-pack-5JDNZFKV.js → goal-pack-YMWZHAH6.js} +1 -1
  64. package/dist/{gofiber-standard-TDJQIVQZ.js → gofiber-standard-PFBIAMGR.js} +1 -1
  65. package/dist/{gogin-standard-UEF3IHSJ.js → gogin-standard-DW5GL7YG.js} +1 -1
  66. package/dist/index.d.ts +12 -6
  67. package/dist/index.js +255 -253
  68. package/dist/{pipeline-OUYS4ZYV.js → pipeline-6MBH3MU2.js} +1 -1
  69. package/dist/platform-capabilities-RWOWND5Q.js +1 -0
  70. package/dist/{project-agent-entry-75WO3QWP.js → project-agent-entry-ZXAE2MAJ.js} +1 -1
  71. package/dist/{project-intelligence-lens-JCHFOIA7.js → project-intelligence-lens-NBTPOK2R.js} +1 -1
  72. package/dist/{project-test-coverage-3P5FH6E5.js → project-test-coverage-HOZC72EK.js} +1 -1
  73. package/dist/proof-carrying-change-WJFAKK3C.js +1 -0
  74. package/dist/{pythonRapidkitExec-UMFLDIYR.js → pythonRapidkitExec-S35OEIEF.js} +1 -1
  75. package/dist/{rust-axum-4TRVPFMB.js → rust-axum-L7UAYARA.js} +1 -1
  76. package/dist/{springboot-standard-COWL75GT.js → springboot-standard-CZH24KWD.js} +1 -1
  77. package/dist/verified-goal-B7EX2PBE.js +1 -0
  78. package/dist/{workspace-CBQDOUSH.js → workspace-EBPYCSEM.js} +1 -1
  79. package/dist/{workspace-agent-sync-RTOTO3DY.js → workspace-agent-sync-Y4F6FBBC.js} +1 -1
  80. package/dist/{workspace-context-STRZO2N3.js → workspace-context-Y7F7GJCQ.js} +1 -1
  81. package/dist/{workspace-contract-PMHUUKFM.js → workspace-contract-XJMWMVQE.js} +1 -1
  82. package/dist/{workspace-explain-CATMJUMN.js → workspace-explain-T2J5ZLY7.js} +1 -1
  83. package/dist/{workspace-foundation-OULCDCXG.js → workspace-foundation-2UP6IMTH.js} +1 -1
  84. package/dist/{workspace-graph-stream-Q55CI4K4.js → workspace-graph-stream-MZVL3OCX.js} +1 -1
  85. package/dist/workspace-graph-token-efficiency-WF6TGSK7.js +1 -0
  86. package/dist/{workspace-intelligence-3RPZRWSF.js → workspace-intelligence-FZRQIFFM.js} +1 -1
  87. package/dist/{workspace-intelligence-benchmark-R5MEGJQS.js → workspace-intelligence-benchmark-V6AEVDMB.js} +1 -1
  88. package/dist/{workspace-intelligence-runner-BNZUYUUN.js → workspace-intelligence-runner-IXT62JG7.js} +1 -1
  89. package/dist/{workspace-knowledge-graph-VJLD35ES.js → workspace-knowledge-graph-EFC4TUDZ.js} +1 -1
  90. package/dist/workspace-knowledge-graph-query-BROIV27M.js +1 -0
  91. package/dist/workspace-knowledge-graph-snapshot-QIMF7TCF.js +1 -0
  92. package/dist/{workspace-mcp-serve-67NTYD67.js → workspace-mcp-serve-C42UUU7W.js} +1 -1
  93. package/dist/{workspace-model-6TKZMNEF.js → workspace-model-72SJ6WXT.js} +1 -1
  94. package/dist/{workspace-onboarding-7V7EH3RH.js → workspace-onboarding-TFDAIHTS.js} +1 -1
  95. package/dist/{workspace-registry-summary-ILVO7DEU.js → workspace-registry-summary-ZNTXSUI4.js} +1 -1
  96. package/dist/{workspace-repair-engine-2VGFB3DJ.js → workspace-repair-engine-542TAL3Z.js} +1 -1
  97. package/dist/workspace-run-NAPJYNSZ.js +1 -0
  98. package/dist/{workspace-verify-VQWYDAF2.js → workspace-verify-UXKENOQU.js} +1 -1
  99. package/dist/{workspace-watch-2Z636HWS.js → workspace-watch-DV5AHLOK.js} +1 -1
  100. package/docs/README.md +2 -2
  101. package/docs/agent-framework-adapters.md +190 -46
  102. package/docs/ci-workflows.md +37 -14
  103. package/docs/commands-reference.md +30 -14
  104. package/docs/creating-workspaces-and-projects.md +30 -10
  105. package/docs/doctor-command.md +6 -0
  106. package/docs/native-kit-baselines.md +4 -0
  107. package/docs/workspace-run.md +10 -0
  108. package/package.json +7 -4
  109. package/scripts/enterprise-package-smoke.mjs +98 -5
  110. package/dist/analyze-Z3EZNJRI.js +0 -1
  111. package/dist/autopilot-release-T6XFRWZT.js +0 -1
  112. package/dist/capabilities-command-VK3LQLP2.js +0 -1
  113. package/dist/chunk-566NQQTJ.js +0 -97
  114. package/dist/chunk-5EEXLM45.js +0 -1
  115. package/dist/chunk-65AE7EC5.js +0 -2
  116. package/dist/chunk-6NSJBKKK.js +0 -4
  117. package/dist/chunk-7NKM6EHE.js +0 -7
  118. package/dist/chunk-ABUSBLBH.js +0 -1
  119. package/dist/chunk-BR6QIYQS.js +0 -1
  120. package/dist/chunk-CMLLERGG.js +0 -418
  121. package/dist/chunk-DFREJHG7.js +0 -1
  122. package/dist/chunk-FU6SQ2ND.js +0 -1
  123. package/dist/chunk-M6DVNC6X.js +0 -2
  124. package/dist/chunk-O5XQP5E7.js +0 -1
  125. package/dist/chunk-OH6LV5JP.js +0 -6
  126. package/dist/chunk-PTI743SC.js +0 -7
  127. package/dist/chunk-QBKOPXKC.js +0 -1
  128. package/dist/chunk-RGNCL5OB.js +0 -1
  129. package/dist/chunk-VJQPIH2S.js +0 -681
  130. package/dist/chunk-WPPRUFJW.js +0 -4
  131. package/dist/chunk-ZKYH44ER.js +0 -1
  132. package/dist/platform-capabilities-DB4BZPTD.js +0 -1
  133. package/dist/proof-carrying-change-LAYV4LTI.js +0 -1
  134. package/dist/verified-goal-75KGBWTE.js +0 -1
  135. package/dist/workspace-graph-token-efficiency-YHXFGH3Z.js +0 -1
  136. package/dist/workspace-knowledge-graph-query-TT2KK3SF.js +0 -1
  137. package/dist/workspace-knowledge-graph-snapshot-TQAKDDUA.js +0 -1
  138. 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 concrete implementation of this
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 are available for governed attachment after their exact
19
- manifest digests pass the required Linux, macOS, and Windows conformance lanes
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.v1.json` | JSON Schema for reproducible adapter admission evidence |
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.v1.json` | Review-pending, digest-bound index of the complete cross-platform evidence matrix |
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.17.0` | Python `>=3.10` | `agent-framework` PyPI package family |
92
- | `microsoft-agent-framework-dotnet` | `1.20.0` | .NET `>=8.0` | `Microsoft.Agents.AI` NuGet package family |
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.12.0`, while .NET uses
96
- `Microsoft.Agents.AI.Foundry` `1.20.0-preview.260831.1` over the stable
97
- `Microsoft.Agents.AI` `1.20.0` core. Preview integration status is not
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. Workspace Model reports these projects as `agent`,
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 an environment-name example with no secret values. Python uses
117
- the host platform's normal Python 3 launcher and remains dependency-free for
118
- these tests; .NET uses a separately pinned test project. The conformance matrix
119
- executes these tests in addition to compiling and exercising the deterministic
120
- framework lifecycle.
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
- A path-filtered six-lane adapter matrix compiles the generated Python and .NET
130
- projects on Linux, macOS, and Windows. Every lane records all 18 mandatory
131
- checks, the exact runtime and framework baseline, a digest of the adapter
132
- manifest, and one bounded evidence file per check. Reports are retained as CI
133
- artifacts for review. A final job validates every evidence path and admits the
134
- matrix only when all three operating-system lanes pass for both adapters.
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-manifest digests, lane reports, and every
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 the release-admitted
155
- runtimes:
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, creates the
207
- Goal and PCC, applies the adapter-owned scaffold, and records its ownership
208
- receipt before committing the project lifecycle transaction. A failed scaffold
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. Only the Microsoft adapters are now
261
- implemented, and their preview state still prevents premature selection.
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. Keep automated upstream discovery separate from release authority: open or
271
- refresh one version pull request, rerun the full matrix, bind the exact green
272
- candidate, then rely on protected-branch review before merge.
273
- 5. Admit another framework only after its create and attach paths share these
274
- ownership, rollback, and verification guarantees.
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, LangGraph, and OpenAI Agents
278
- SDK are not advertised; each requires its own adapter, tested baseline, and
279
- conformance evidence.
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.
@@ -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 | 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
- | Security | `.github/workflows/security.yml` | Path-aware scanning plus the always-resolved `Security Gate` |
15
- | Manual npm release | `.github/workflows/release-npm-manual.yml` | Maintainer-only release gate and publish workflow |
16
- | Discord announcement | `.github/workflows/discord-release-announcement.yml` | Preview and publish one idempotent product-aware release announcement |
17
- | Contributor onboarding | `.github/workflows/contributor-onboarding.yml` | Accepted-contributor onboarding automation |
18
- | Contributor Hub | `.github/workflows/contributor-hub.yml` | Daily live issue-route freshness |
19
- | Welcome | `.github/workflows/welcome.yml` | First-issue and first-contribution messages |
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.75.1 \
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 only exact release-admitted baselines. `plan`
277
- creates or reuses a scoped Goal, begins a Proof-Carrying Change, and attaches a
278
- hash-bound file plan without writing project files. `attach` shows that plan
279
- and requires an interactive confirmation or explicit `--yes` before granting
280
- the filesystem effect and writing an isolated `agents/<name>` directory.
281
- Dependency installation, credentials, generated-code execution, and model
282
- provider calls are never implied by that approval. `apply` is the automation
283
- counterpart for a plan that was separately authorized with `change authorize`.
284
- Any adapter, version, manifest, runtime, or platform drift invalidates its
285
- bundled release admission until the complete conformance matrix passes again.
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 service, such as a FastAPI API, Go service,
20
- Spring Boot service, .NET API, or frontend application.
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 | Framework baseline | Behavior |
392
- | ------------------------ | ------- | ------------------ | ------------------------------------------ |
393
- | `agent.microsoft.python` | Python | Release-admitted | Goal + PCC + owned isolated agent scaffold |
394
- | `agent.microsoft.dotnet` | .NET | Release-admitted | Goal + PCC + owned isolated agent scaffold |
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
- Agent kits require Workspace governance and therefore do not accept
397
- `--no-workspace`. They do not install dependencies, call a model, or store
398
- credentials. Their exact framework versions are promoted only after the full
399
- Linux, macOS, and Windows conformance matrix passes.
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
 
@@ -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
 
@@ -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.75.1",
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.0.15",
208
- "@vitest/ui": "^4.0.15",
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.0.15"
221
+ "vitest": "^4.1.11"
219
222
  },
220
223
  "optionalDependencies": {
221
224
  "@rollup/rollup-win32-x64-msvc": "*"