rapidkit 0.37.0 → 0.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -44
- package/dist/autopilot-release-QNZ2IL7K.js +1 -0
- package/dist/chunk-3SWQKRXH.js +2 -0
- package/dist/{chunk-7VSYTOOG.js → chunk-7RBZGQ7T.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{pipeline-BOU4KETN.js → pipeline-IMB3C3JY.js} +1 -1
- package/dist/{workspace-agent-sync-V2H6NTGD.js → workspace-agent-sync-4R7S3F6T.js} +1 -1
- package/dist/{workspace-context-KCKNV5VQ.js → workspace-context-CKACDTVE.js} +1 -1
- package/dist/workspace-run-PNMZJNDC.js +1 -0
- package/dist/workspace-verify-EO435PS4.js +1 -0
- package/docs/AI_DYNAMIC_INTEGRATION.md +440 -0
- package/docs/AI_EXAMPLES.md +419 -0
- package/docs/AI_FEATURES.md +460 -0
- package/docs/AI_QUICKSTART.md +245 -0
- package/docs/DEVELOPMENT.md +88 -0
- package/docs/From Code to Shared Understanding.png +0 -0
- package/docs/OPEN_SOURCE_USER_SCENARIOS.md +170 -0
- package/docs/OPTIMIZATION_GUIDE.md +504 -0
- package/docs/PACKAGE_MANAGER_POLICY.md +25 -0
- package/docs/README.md +120 -0
- package/docs/SECURITY.md +63 -0
- package/docs/SETUP.md +107 -0
- package/docs/UTILITIES.md +221 -0
- package/docs/WORKSPACE_MARKER_SPEC.md +276 -0
- package/docs/ci-workflows.md +56 -0
- package/docs/commands-reference.md +136 -0
- package/docs/config-file-guide.md +295 -0
- package/docs/contracts/ARTIFACT_CATALOG.md +104 -0
- package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +138 -0
- package/docs/contracts/README.md +70 -0
- package/docs/contracts/RUNTIME_ACCEPTANCE_MATRIX.md +98 -0
- package/docs/contracts/RUNTIME_SUPPORT_MATRIX.md +74 -0
- package/docs/contracts/rapidkit-cli-contracts.json +239 -0
- package/docs/doctor-command.md +263 -0
- package/docs/examples/ci-agent-grounding.yml +62 -0
- package/docs/from-code-to-shared-understanding.md +46 -0
- package/docs/governance-policy.enterprise.example.json +40 -0
- package/docs/mirror-config.enterprise.example.json +60 -0
- package/docs/policies.workspace.example.yml +23 -0
- package/docs/workspace-operations.md +160 -0
- package/docs/workspace-run.md +80 -0
- package/package.json +3 -2
- package/dist/autopilot-release-AUXP2ZIF.js +0 -1
- package/dist/chunk-EJGKBFV4.js +0 -2
- package/dist/workspace-run-DEXI52KO.js +0 -1
- package/dist/workspace-verify-HBCQNNGU.js +0 -1
- /package/dist/{chunk-D23L2GFT.js → chunk-TRXYRHD7.js} +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Workspace Run — Polyglot Fleet Orchestration
|
|
2
|
+
|
|
3
|
+
`workspace run` executes CI-safe stages (`init`, `test`, `build`, `start`) across discovered projects in a workspace. Command syntax is in [commands-reference.md](./commands-reference.md).
|
|
4
|
+
|
|
5
|
+
## Quick start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx rapidkit workspace run test --parallel
|
|
9
|
+
npx rapidkit workspace run test --affected --since HEAD~1
|
|
10
|
+
npx rapidkit workspace run test --affected --blast-radius
|
|
11
|
+
npx rapidkit workspace run build --json --max-workers 8
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`--blast-radius` uses `.rapidkit/workspace.contract.json` (and legacy `.rapidkit/workspace-dependency-graph.json` as fallback) to expand direct `dependsOn` and publish/consume event relationships.
|
|
15
|
+
|
|
16
|
+
## Supported runtimes
|
|
17
|
+
|
|
18
|
+
| Runtime | Frameworks | Status |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| Node | NestJS, Express, Next.js, Nuxt | Built-in |
|
|
21
|
+
| Go | Fiber, Gin, Echo, Chi | Built-in |
|
|
22
|
+
| Java | Spring Boot, Quarkus, Gradle | Built-in |
|
|
23
|
+
| Python | FastAPI, Django, Flask, Poetry | Built-in |
|
|
24
|
+
| PHP | Laravel, Symfony, Slim | Observed |
|
|
25
|
+
| Rust | Actix, Axum, Rocket, Tokio | Observed |
|
|
26
|
+
| .NET | ASP.NET Core, Entity Framework | Built-in |
|
|
27
|
+
| Elixir | Phoenix, Umbrella | Observed |
|
|
28
|
+
| Ruby | Rails, Sinatra, RSpec | Observed |
|
|
29
|
+
|
|
30
|
+
Public scaffold/import/lifecycle contract: [contracts/RUNTIME_SUPPORT_MATRIX.md](./contracts/RUNTIME_SUPPORT_MATRIX.md).
|
|
31
|
+
|
|
32
|
+
## Enterprise configuration
|
|
33
|
+
|
|
34
|
+
Override stage commands per project via `.rapidkit/context.json`:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"runtime": "php",
|
|
39
|
+
"framework": "Laravel",
|
|
40
|
+
"commands": {
|
|
41
|
+
"test": "php artisan test --parallel=4",
|
|
42
|
+
"build": "php artisan config:cache && php artisan route:cache",
|
|
43
|
+
"lint": "php bin/phpstan analyse --level=8"
|
|
44
|
+
},
|
|
45
|
+
"environment": "dev"
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Enterprise features include command overrides, multi-framework projects, error categorization (setup vs test vs runtime), preflight validation, health checks, custom stages, stage dependencies, environment variants, caching, and composite steps.
|
|
50
|
+
|
|
51
|
+
## JSON reporting
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx rapidkit workspace run test --json > test-results.json
|
|
55
|
+
cat test-results.json | jq '.projects[] | {path, status, errorCategory}'
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`errorCategory` values: `setup`, `test-failure`, `runtime`, `dependency`, `timeout`.
|
|
59
|
+
|
|
60
|
+
## Command semantics
|
|
61
|
+
|
|
62
|
+
RapidKit has two workspace-level execution surfaces and three equivalent full-init aliases at workspace root:
|
|
63
|
+
|
|
64
|
+
| Command | Intent | Scope |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| `init`, `workspace init`, `workspace run init` (at workspace root) | Mirrored full-init (workspace deps + project init) | Workspace + fleet |
|
|
67
|
+
| `workspace run <test\|build\|start>` | Fleet stage execution | Selected projects |
|
|
68
|
+
| `init`, `test`, `build`, `start`, `dev` (inside project dir) | Project primitive | Single project |
|
|
69
|
+
|
|
70
|
+
At workspace root, `npx rapidkit init`, `npx rapidkit workspace init`, and `npx rapidkit workspace run init` are equivalent aliases.
|
|
71
|
+
|
|
72
|
+
Inside a project directory, `npx rapidkit init` remains project-scoped.
|
|
73
|
+
|
|
74
|
+
`dev` is excluded from `workspace run` — it is a long-running local process, not a CI batch stage.
|
|
75
|
+
|
|
76
|
+
## See also
|
|
77
|
+
|
|
78
|
+
- [Documentation index](./README.md)
|
|
79
|
+
- [commands-reference.md](./commands-reference.md)
|
|
80
|
+
- [contracts/RUNTIME_SUPPORT_MATRIX.md](./contracts/RUNTIME_SUPPORT_MATRIX.md)
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rapidkit",
|
|
3
|
-
"version": "0.37.
|
|
3
|
+
"version": "0.37.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
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": [
|
|
7
7
|
"rapidkit",
|
|
8
8
|
"workspai",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|
|
42
42
|
"contracts",
|
|
43
|
+
"docs",
|
|
43
44
|
"data/modules-embeddings.json",
|
|
44
45
|
"scripts/enforce-package-manager.cjs",
|
|
45
46
|
"scripts/check-cli-resolution.cjs"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{b as AUTOPILOT_RELEASE_ALIAS_FILENAME,a as AUTOPILOT_RELEASE_LAST_RUN_FILENAME,c as runAutopilotRelease}from'./chunk-7VSYTOOG.js';
|
package/dist/chunk-EJGKBFV4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-C7OVQQXT.js';import d$1 from'path';import l from'fs-extra';var k="workspace-context.v1",f=".rapidkit/reports/workspace-context-agent.json";function w(e){if(typeof e!="string"||!e.trim()||e==="true")return "generic";let t=e.trim().toLowerCase();return t==="codex"||t==="claude"||t==="cursor"||t==="orca"?t:"generic"}function h(e){return `npx --yes --package rapidkit rapidkit ${e}`.trim()}function y(e){return `npx rapidkit ${e}`.trim()}function i(e){return {id:e.id,scope:e.scope,display:y(e.args),execute:h(e.args),description:e.description,...e.project?{project:e.project}:{}}}function g(e,t){return `workspace run ${t} --scope project:${e.name}`}function j(e){return (e.startsWith("project:")?e.slice(8):e).trim().toLowerCase()}function x(e){return [e.name,e.path,d$1.basename(e.path),e.absolutePath].filter(t=>typeof t=="string"&&t.trim().length>0).map(t=>t.trim().toLowerCase())}function C(e,t){let s=[i({id:"workspace.model",scope:"workspace",args:"workspace model --json",description:"Read the canonical workspace intelligence model."}),i({id:"workspace.doctor",scope:"workspace",args:"doctor workspace --json",description:"Check workspace health before claiming verification."}),i({id:"workspace.pipeline",scope:"workspace",args:"pipeline --json",description:"Run the governed sync, doctor, analyze, readiness, and autopilot loop."}),i({id:"workspace.contract.verify",scope:"workspace",args:"workspace contract verify --json",description:"Verify workspace contract and dependency edges."})],o=t?[t]:e.projects;for(let r of o)r.commands.fleetStages.includes("test")&&s.push(i({id:`project.${r.name}.test`,scope:"project",project:r.name,args:g(r,"test"),description:`Run tests for ${r.name} through workspace orchestration.`})),r.commands.fleetStages.includes("build")&&s.push(i({id:`project.${r.name}.build`,scope:"project",project:r.name,args:g(r,"build"),description:`Build ${r.name} through workspace orchestration.`}));return s}function W(e){return e.commands.fleetStages.filter(t=>t==="test"||t==="build").map(t=>`workspace run ${t}`)}function v(e,t){if(!t?.startsWith("project:"))return;let s=j(t);if(s)return e.projects.find(o=>x(o).includes(s))}function b(e,t,s){let o=[...e.validation?.issues??[]];t?.startsWith("project:")&&!s&&o.push({severity:"error",code:"context.scope.project.missing",message:`Requested project scope was not found: ${t}`,target:t});let r=o.filter(a=>a.severity==="error").length,c=o.filter(a=>a.severity==="warning").length;return {status:r>0?"failed":c>0?"warning":"passed",errors:r,warnings:c,issues:o}}function S(e){let t=[],s=[];for(let[o,r]of Object.entries(e.evidence))r?.exists?t.push(`${o}: ${r.path}`):s.push(o);return {available:t.sort(),missing:s.sort()}}function P(e){let t=e.summary.projectCount,s=e.summary.runtimes.length?e.summary.runtimes.join(", "):"no runtime",o=e.identity.surfaces.length?e.identity.surfaces.join(", "):"no detected surfaces";return `${e.workspace.name} is a ${e.identity.workspaceType} with ${t} project${t===1?"":"s"}, ${s} runtime coverage, and ${o}.`}function A(e){let t=["Do not claim a command passed unless a report or command output proves it.","Do not infer secrets or environment values from file names.","Do not change project scope without checking the selected project."];return e.contracts.exists||t.push("Workspace contract is missing; dependency and API edges may be incomplete."),e.summary.observedProjects>0&&t.push("Some projects are observed rather than first-class; command support may be partial."),t}async function O(e){let t=e.model??await d({workspacePath:e.workspacePath,includeEvidence:e.includeEvidence===true,observableScanDepth:e.observableScanDepth,now:e.now}),s=w(e.agent),o=v(t,e.scope),r=b(t,e.scope,o);if(e.strict===true&&r.status!=="passed"){let n=r.issues.map(p=>`${p.severity}:${p.code}:${p.target}`).join(", ");throw new Error(`Workspace context strict validation failed: ${n}`)}let c=(o?[o]:t.projects).map(n=>({name:n.name,path:n.path,kind:n.kind,runtime:n.runtime,framework:n.frameworkDisplayName,...n.generator?{generator:n.generator}:{},supportTier:n.supportTier,safeCommands:W(n),importantFiles:n.importantFiles})),a=S(t),m=P(t);return {schemaVersion:k,generatedAt:(e.now??new Date).toISOString(),agent:s,workspaceSummary:m,modelRef:".rapidkit/reports/workspace-model.json",workspace:{name:t.workspace.name,root:t.workspace.root,type:t.identity.workspaceType,...t.workspace.profile?{profile:t.workspace.profile}:{}},scope:{requested:e.scope??"workspace",...o?{activeProject:o.name}:{}},projects:c,safeCommands:C(t,o),evidence:a,policies:{mode:t.policies.mode,source:t.policies.source},contracts:{exists:t.contracts.exists,path:t.contracts.workspaceContractPath},validation:r,agentInstructions:["Read `.rapidkit/reports/INDEX.json` first, then this context pack and linked evidence reports.","Use this context as the workspace source of truth before inspecting random files.","Prefer workspace-level evidence over generic framework assumptions.","Use `display` commands when explaining steps to a human.","Use `execute` commands when launching commands from automation or tooling.","Keep project-scoped advice tied to the active project scope.","Regenerate stale grounding with `npx rapidkit workspace agent-sync --write --refresh-context`."],unsafeAssumptions:A(t),humanSummary:[m,`Evidence available: ${a.available.length}. Missing evidence groups: ${a.missing.join(", ")||"none"}.`,o?`Active project scope: ${o.name} (${o.frameworkDisplayName}).`:"Scope: whole workspace."].join(`
|
|
2
|
-
`)}}async function D(e,t){let s=d$1.join(t,f);return await l.ensureDir(d$1.dirname(s)),await l.writeJSON(s,e,{spaces:2}),s}export{k as a,f as b,O as c,D as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as runWorkspaceStage}from'./chunk-D23L2GFT.js';export{a as WORKSPACE_RUN_LAST_REPORT_FILENAME}from'./chunk-FV5A3N3I.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {m,f as f$1,c as c$1,n,e}from'./chunk-U6QUN6V2.js';import {d}from'./chunk-C7OVQQXT.js';import {c as c$2}from'./chunk-FV5A3N3I.js';import c from'path';import f from'fs-extra';var R="workspace-verify.v1",S=".rapidkit/reports/workspace-verify-last-run.json";function C(e,s){return c.isAbsolute(s)?s:c.join(e,s)}async function j(e$1){let s=await f.readJson(e$1);if(!s||typeof s!="object"||Array.isArray(s))throw new Error(`Workspace impact input is not a JSON object: ${e$1}`);let t=s;if(t.schemaVersion!==e)throw new Error(`Unsupported workspace impact schema: ${String(t.schemaVersion)}`);return t}function I(e){let s=new Set,t=[];for(let a of e){let n=`${a.scope}:${a.project??""}:${a.display}`;s.has(n)||(s.add(n),t.push(a));}return t}function V(e,s){if(!e||e==="workspace")return true;let t=(e.startsWith("project:")?e.slice(8):e).trim().toLowerCase();return s.scope==="workspace"?true:(s.project??"").trim().toLowerCase()===t}function A(e,s){if(e.id==="workspace.doctor")return c.join(s,".rapidkit","reports","doctor-last-run.json");if(e.id==="workspace.contract.verify")return c.join(s,".rapidkit","reports","workspace-contract-verify-last-run.json");if(e.id==="workspace.readiness")return c.join(s,".rapidkit","reports","release-readiness-last-run.json");if(e.id==="workspace.analyze")return c.join(s,".rapidkit","reports","analyze-last-run.json");if(e.id==="workspace.pipeline")return c.join(s,".rapidkit","reports","pipeline-last-run.json");if(e.id.startsWith("project.")&&(e.id.endsWith(".test")||e.id.endsWith(".build")))return c.join(s,".rapidkit","reports","workspace-run-last.json")}function l(e){return !e||typeof e!="object"||Array.isArray(e)?null:e}function x(e){let s=l(e.healthScore),t=typeof s?.errors=="number"?s.errors:0,a=typeof s?.percent=="number"?s.percent:void 0;return t>0?{status:"fail",message:`Doctor evidence reports ${t} error(s).`}:typeof a=="number"&&a<70?{status:"warn",message:`Doctor health score is ${a}%.`}:{status:"pass",message:"Doctor evidence is present and healthy."}}function O(e){let s=typeof e.overallStatus=="string"?e.overallStatus:"unknown";return s==="fail"?{status:"fail",message:"Release readiness evidence reports blocking failures."}:s==="warn"?{status:"warn",message:"Release readiness evidence reports warnings."}:s==="pass"?{status:"pass",message:"Release readiness evidence passed."}:{status:"warn",message:`Release readiness evidence status is ${s}.`}}function $(e){let s=typeof e.status=="string"?e.status:"unknown";return s==="failed"||s==="fail"?{status:"fail",message:"Workspace contract verify evidence failed."}:s==="passed"||s==="pass"?{status:"pass",message:"Workspace contract verify evidence passed."}:{status:"warn",message:`Workspace contract verify evidence status is ${s}.`}}function _(e){let s=l(e.summary);if(s?.blocking===true||e.blocking===true)return {status:"fail",message:"Analyze evidence reports blocking findings."};let a=typeof s?.status=="string"?s.status:void 0;return a==="warn"||a==="warning"?{status:"warn",message:"Analyze evidence reports warnings."}:{status:"pass",message:"Analyze evidence is present."}}function M(e){let s=l(e.summary),t=typeof s?.verdict=="string"?s.verdict:void 0;return t==="blocked"?{status:"fail",message:"Pipeline evidence is blocked."}:t==="needs-attention"?{status:"warn",message:"Pipeline evidence needs attention."}:t==="ready"?{status:"pass",message:"Pipeline evidence is ready."}:{status:"warn",message:"Pipeline evidence status is unknown."}}function D(e,s){let t=s.id.endsWith(".build")?"build":s.id.endsWith(".test")?"test":null,a=c$2(e,t);if(!a)return {status:"missing",message:"Workspace run evidence is missing or unreadable."};let n=a.stage;if(t&&n!==t)return {status:"missing",message:`Workspace run evidence is for stage "${n}", expected "${t}".`};let i=l(a.summary),o=typeof i?.failed=="number"?i.failed:0,m=typeof i?.exitCode=="number"?i.exitCode:0,d=Array.isArray(a.projects)?a.projects:[],p=s.project?.toLowerCase(),r=d.find(g=>{let u=l(g);if(!u||!p)return false;let E=typeof u.projectName=="string"?u.projectName.toLowerCase():"",w=typeof u.projectPath=="string"?u.projectPath.toLowerCase():"";return E===p||w.endsWith(`/${p}`)||w===p});if(r){let g=l(r),u=typeof g?.status=="string"?g.status:"unknown";if(u==="failed")return {status:"fail",message:`Workspace run evidence failed for ${s.project}.`};if(u==="passed")return {status:"pass",message:`Workspace run evidence passed for ${s.project}.`};if(u==="skipped")return {status:"warn",message:`Workspace run evidence skipped for ${s.project}.`}}return o>0||m!==0?{status:"fail",message:"Workspace run evidence reports failures."}:{status:"pass",message:"Workspace run evidence is present."}}async function q(e,s,t){let a=A(e,s),n=a?c.relative(s,a).split(c.sep).join("/"):void 0;if(e.id==="workspace.contract.verify"&&!t)return {id:e.id,label:e.label,scope:e.scope,project:e.project,command:e,status:"skipped",required:e.required,message:"Workspace contract is not present; contract verify skipped."};if(!a||!await f.pathExists(a))return {id:e.id,label:e.label,scope:e.scope,project:e.project,command:e,status:"missing",required:e.required,evidencePath:n,message:n?`Missing evidence report: ${n}`:"No evidence mapping exists for this command."};let i=l(await f.readJson(a));if(!i)return {id:e.id,label:e.label,scope:e.scope,project:e.project,command:e,status:"fail",required:e.required,evidencePath:n,message:"Evidence report is not a JSON object."};let o;return e.id==="workspace.doctor"?o=x(i):e.id==="workspace.readiness"?o=O(i):e.id==="workspace.contract.verify"?o=$(i):e.id==="workspace.analyze"?o=_(i):e.id==="workspace.pipeline"?o=M(i):e.id.startsWith("project.")?o=D(i,e):o={status:"pass",message:"Evidence report is present."},{id:e.id,label:e.label,scope:e.scope,project:e.project,command:e,status:o.status,required:e.required,evidencePath:n,message:o.message}}function F(e){let s=e.filter(r=>r.status==="pass").length,t=e.filter(r=>r.status==="warn").length,a=e.filter(r=>r.status==="fail").length,n=e.filter(r=>r.status==="missing").length,i=e.filter(r=>r.status==="skipped").length,o=e.filter(r=>r.required&&(r.status==="fail"||r.status==="missing")).map(r=>`${r.id}: ${r.message}`),m=e.filter(r=>r.required&&r.status==="missing").length,d="ready",p=0;return o.length>0?(d="blocked",p=2):(t>0||m>0)&&(d="needs-attention",p=1),{verdict:d,exitCode:p,stepsPassed:s,stepsWarn:t,stepsFailed:a,stepsMissing:n,stepsSkipped:i}}async function N(e$1){let s=c.resolve(e$1.workspacePath);if(e$1.fromImpactPath){let i=C(s,e$1.fromImpactPath);return {impact:await j(i),fromImpactRef:c.relative(s,i).split(c.sep).join("/")}}let t=c.join(s,f$1);if(await f.pathExists(t))return {impact:await j(t),fromImpactRef:f$1};let a=c.join(s,c$1);if(await f.pathExists(a))return {impact:await n({workspacePath:s,fromPath:c$1,scope:e$1.scope,includeAbsolutePaths:e$1.includeAbsolutePaths,includeEvidence:e$1.includeEvidence,observableScanDepth:e$1.observableScanDepth,now:e$1.now}),fromImpactRef:c$1};let n$1=await d({workspacePath:s,includeAbsolutePaths:e$1.includeAbsolutePaths,includeEvidence:e$1.includeEvidence,observableScanDepth:e$1.observableScanDepth,now:e$1.now});return {impact:{schemaVersion:e,generatedAt:(e$1.now??new Date).toISOString(),fromRef:"baseline",diffRef:".rapidkit/reports/workspace-model-diff-last-run.json",workspace:{name:n$1.workspace.name,profile:n$1.workspace.profile,type:n$1.workspace.type},summary:{changed:false,risk:"none",affectedProjects:0,workspaceItems:0,recommendedCommands:0},affectedProjects:[],workspaceImpact:[],verificationPlan:[],agentBrief:{headline:"Baseline workspace verify run.",bullets:["No impact report or snapshot was available; baseline gates were evaluated."],unsafeAssumptions:["Do not claim runtime verification passed unless evidence exists."]},diff:{schemaVersion:"workspace-model-diff.v1",generatedAt:(e$1.now??new Date).toISOString(),fromRef:"baseline",toRef:".rapidkit/reports/workspace-model.json",fromHash:"baseline",toHash:"baseline",summary:{changed:false,addedProjects:0,removedProjects:0,changedProjects:0,workspaceChanges:0,validationChanges:0,gitChangedFiles:0},git:{available:false,dirty:false,changedFiles:0,untrackedFiles:0,deletedFiles:0},changes:[],currentModel:n$1}}}}async function Y(e){let s=c.resolve(e.workspacePath),{impact:t,fromImpactRef:a}=await N(e),n=t.diff.currentModel,i=I([...m(),...t.verificationPlan]).filter(r=>V(e.scope,r)),o=[];for(let r of i)o.push(await q(r,s,n.contracts.exists===true));let m$1=F(o),d=o.filter(r=>r.status==="missing"&&r.evidencePath).map(r=>r.evidencePath),p=o.filter(r=>r.required&&(r.status==="fail"||r.status==="missing")).map(r=>`${r.id}: ${r.message}`);return {schemaVersion:R,generatedAt:(e.now??new Date).toISOString(),workspacePath:s,mode:"evidence",fromImpactRef:a,scope:e.scope,impact:{changed:t.summary.changed,risk:t.summary.risk,affectedProjects:t.summary.affectedProjects,recommendedCommands:t.summary.recommendedCommands},summary:m$1,steps:o,missingEvidence:d,blockingReasons:p,verificationPlan:i}}async function U(e,s){let t=c.join(s,S);return await f.ensureDir(c.dirname(t)),await f.writeJson(t,e,{spaces:2}),t}function G(e,s){return e.summary.verdict==="blocked"?2:s?.strict&&e.summary.verdict!=="ready"?1:e.summary.exitCode}export{S as WORKSPACE_VERIFY_REPORT_PATH,R as WORKSPACE_VERIFY_SCHEMA_VERSION,Y as buildWorkspaceVerify,G as workspaceVerifyExitCode,U as writeWorkspaceVerify};
|
|
File without changes
|