@albsugy/aos 0.5.0 → 0.5.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/CHANGELOG.md +16 -0
- package/README.md +4 -2
- package/dist/aos.mjs +2 -2
- package/package.json +17 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.1 — 2026-07-04
|
|
4
|
+
|
|
5
|
+
Polish pass: correctness, DX, and release discipline.
|
|
6
|
+
|
|
7
|
+
- **CLI exit codes:** `run finish`/`run state` with no active run and `find` without a
|
|
8
|
+
query now exit 1 instead of 0 — errors are scriptable.
|
|
9
|
+
- **npm README fixed:** the package page no longer links to the (private) repo's
|
|
10
|
+
unavailable site; the npm package page is the public home.
|
|
11
|
+
- **Release tooling:** `npm run release -- <patch|minor|major|x.y.z>` — bumps, enforces
|
|
12
|
+
a CHANGELOG entry, builds, runs both test suites, commits, and tags; pushing stays
|
|
13
|
+
deliberate. Documented in RELEASING.md.
|
|
14
|
+
- **Workflow hardening:** release fails fast if `package.json` doesn't match the tag;
|
|
15
|
+
CI cancels superseded runs, uses current action versions, and shellchecks all scripts.
|
|
16
|
+
- **Package metadata:** declares `os: darwin/linux` honestly; `npm test` now runs both
|
|
17
|
+
source and bundle suites; manual `npm publish` self-verifies via `prepublishOnly`.
|
|
18
|
+
|
|
3
19
|
## 0.5.0 — 2026-07-04
|
|
4
20
|
|
|
5
21
|
Public distribution via npm; source stays private.
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ The design bet: frontier labs keep making agent *execution* better and cheaper;
|
|
|
17
17
|
what they never will — **your** context, **your** policies, **your** audit trail, portable
|
|
18
18
|
across runtimes.
|
|
19
19
|
|
|
20
|
-
**
|
|
20
|
+
**Package:** [npmjs.com/package/@albsugy/aos](https://www.npmjs.com/package/@albsugy/aos)
|
|
21
21
|
|
|
22
22
|
## Install
|
|
23
23
|
|
|
@@ -38,7 +38,9 @@ installer resolves the version from the registry, **verifies the registry's sha-
|
|
|
38
38
|
integrity hash**, unpacks to `~/.local/share/aos`, and links `~/.local/bin/aos`.
|
|
39
39
|
No source code and no git history land on your machine (the source repository is
|
|
40
40
|
private; the published package is the compiled bundle). Pin with `AOS_VERSION=0.5.0`;
|
|
41
|
-
update later with `aos update`.
|
|
41
|
+
update later with `aos update`; diagnose with `aos doctor`.
|
|
42
|
+
|
|
43
|
+
Uninstall: `rm -rf ~/.local/share/aos ~/.local/bin/aos` — your data in `~/.aos` is yours to keep.
|
|
42
44
|
|
|
43
45
|
## Quickstart
|
|
44
46
|
|
package/dist/aos.mjs
CHANGED
|
@@ -194,7 +194,7 @@ Usage:
|
|
|
194
194
|
aos update Update aos in place (git pull + install deps)
|
|
195
195
|
aos help This help
|
|
196
196
|
`;async function hd(){Et();let{flags:s,positional:e}=fd(ud);switch(cd){case"init":{let{project:t,home:n}=Ma(process.cwd(),{name:s.name});console.log(`\u2714 Registered project "${t.name}" (${t.id})`),console.log(`\u2714 Spec scaffolded at ${n}`),console.log("\u2714 Skills installed to .claude/skills/ (aos-ticket, aos-verify, aos-learn, aos-ask)"),console.log("\u2714 Hooks wired in .claude/settings.json (gate, audit, context, tokens)"),console.log(`
|
|
197
|
-
Next: edit ${Oe.join(n,"context","pack.md")} and policy.yaml,`),console.log("then start a Claude Code session here and run /aos-ticket <ticket>.");break}case"status":Ra();break;case"context":{let t=$s(s);console.log(Es(t.id,t.name));break}case"run":{let t=e[0],n=$s(s);if(t==="start"){let{runId:i,dir:r}=Ea(n.id,{ticket:s.ticket,title:s.title}),o=H(n.id);console.log(`\u2714 Run started: ${i}`),console.log(` folder: ${r}`),console.log(` plan_gate: ${o.plan_gate}`),console.log(" files to fill: ticket.md \u2192 plan.md \u2192 (implement) \u2192 verification.md \u2192 outcome.md")}else if(t==="finish"){let i=x(n.id);if(!i)
|
|
197
|
+
Next: edit ${Oe.join(n,"context","pack.md")} and policy.yaml,`),console.log("then start a Claude Code session here and run /aos-ticket <ticket>.");break}case"status":Ra();break;case"context":{let t=$s(s);console.log(Es(t.id,t.name));break}case"run":{let t=e[0],n=$s(s);if(t==="start"){let{runId:i,dir:r}=Ea(n.id,{ticket:s.ticket,title:s.title}),o=H(n.id);console.log(`\u2714 Run started: ${i}`),console.log(` folder: ${r}`),console.log(` plan_gate: ${o.plan_gate}`),console.log(" files to fill: ticket.md \u2192 plan.md \u2192 (implement) \u2192 verification.md \u2192 outcome.md")}else if(t==="finish"){let i=x(n.id);if(!i){console.error("No active run."),process.exitCode=1;break}let r=La(n.id,i,s.state||"awaiting-review");console.log(`\u2714 Run ${i} \u2192 ${r.state}`)}else if(t==="state"){let i=x(n.id);if(!i){console.error("No active run."),process.exitCode=1;break}let r=Si(n.id,i,e[1]||"in-progress");console.log(`\u2714 Run ${i} \u2192 ${r.state}`)}else if(t==="list")for(let i of Ye(n.id))console.log(`${i.run} [${i.state}] verify:${i.verification}${i.ticket?` ${i.ticket}`:""}`);else console.log(Ha);break}case"verify":{let t=$s(s),{verdict:n,results:i,adversarial_review:r}=Da(t.id,process.cwd());for(let o of i)console.log(`${o.pass?"\u2705":"\u274C"} ${o.name}${o.required?" (required)":""} \u2014 ${o.ms}ms`),o.pass||console.log(o.output.split(`
|
|
198
198
|
`).slice(-15).join(`
|
|
199
199
|
`));i.length||console.log("No contracts configured in policy.yaml (verification.contracts)."),console.log(`
|
|
200
|
-
Contract verdict: ${n.toUpperCase()}`),r&&console.log("Adversarial review required: spawn a skeptic subagent per /aos-verify."),process.exit(n==="pass"?0:1);break}case"find":{let t=$s(s);if(!e.length)
|
|
200
|
+
Contract verdict: ${n.toUpperCase()}`),r&&console.log("Adversarial review required: spawn a skeptic subagent per /aos-verify."),process.exit(n==="pass"?0:1);break}case"find":{let t=$s(s);if(!e.length){console.error("Usage: aos find <query>"),process.exitCode=1;break}xa(t.id,e.join(" "));break}case"console":{let t=Number(s.port||4560);Ya(t);break}case"hook":await $a(e[0]);break;case"doctor":{let t=Ja({appRoot:me,version:Q(),bundled:Va});process.exit(t?0:1);break}case"version":case"--version":case"-v":console.log(`aos ${Q()}`);break;case"update":{if(!Ps.existsSync(Oe.join(me,".git"))){let a="";try{let l=await fetch("https://registry.npmjs.org/@albsugy/aos/latest");if(!l.ok)throw new Error(`registry responded ${l.status}`);a=(await l.json()).version||""}catch(l){console.error(`Could not check the npm registry for updates (${l.message}).`),process.exit(1)}if(/^[0-9][0-9A-Za-z.-]*$/.test(a)||(console.error(`Could not determine the latest version (got "${a}").`),process.exit(1)),a===Q()){console.log(`\u2714 aos ${Q()} \u2014 already up to date`);break}console.log(`Updating ${Q()} \u2192 ${a}`),Ts("curl -fsSL https://cdn.jsdelivr.net/npm/@albsugy/aos/install.sh | bash",{stdio:"inherit",env:{...process.env,AOS_VERSION:a}});break}let t=()=>Ts("git rev-parse HEAD",{cwd:me,encoding:"utf8"}).trim(),n=t();Ts("git pull --ff-only",{cwd:me,stdio:"inherit"});let i=t()!==n;if(Va){console.log(i?`\u2714 aos updated to ${Q()}`:`\u2714 aos ${Q()} \u2014 already up to date`);break}let r=!Ps.existsSync(Oe.join(me,"node_modules","yaml"));if(!i&&!r){console.log(`\u2714 aos ${Q()} \u2014 already up to date`);break}let o=Ps.existsSync(Oe.join(me,"package-lock.json"))?"npm ci --no-fund --no-audit --loglevel=error":"npm install --no-fund --no-audit --loglevel=error";Ts(o,{cwd:me,stdio:"inherit"}),console.log(i?`\u2714 aos updated to ${Q()}`:`\u2714 dependencies restored (aos ${Q()})`);break}case"projects":{for(let t of V().projects)console.log(`${t.id} ${t.repos.join(", ")} \u2192 ${L(t.id)}`);break}default:console.log(Ha)}}hd().catch(s=>{console.error(s.message||s),process.exit(1)});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@albsugy/aos",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Agent Operations Stack — portable spec, guardrails, audit, verification, and console for operating AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,10 +10,17 @@
|
|
|
10
10
|
"node": ">=22"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
|
-
"test": "
|
|
13
|
+
"test": "npm run test:source && npm run test:bundle",
|
|
14
|
+
"test:source": "bash test/smoke.sh",
|
|
15
|
+
"test:bundle": "AOS_BIN=\"node $PWD/dist/aos.mjs\" bash test/smoke.sh",
|
|
14
16
|
"build": "node scripts/build.mjs",
|
|
15
|
-
"prepublishOnly": "npm run build"
|
|
17
|
+
"prepublishOnly": "npm run build && npm test",
|
|
18
|
+
"release": "bash scripts/release.sh"
|
|
16
19
|
},
|
|
20
|
+
"os": [
|
|
21
|
+
"darwin",
|
|
22
|
+
"linux"
|
|
23
|
+
],
|
|
17
24
|
"files": [
|
|
18
25
|
"dist",
|
|
19
26
|
"assets",
|
|
@@ -21,7 +28,12 @@
|
|
|
21
28
|
"CHANGELOG.md"
|
|
22
29
|
],
|
|
23
30
|
"publishConfig": {
|
|
24
|
-
"access": "public"
|
|
31
|
+
"access": "public",
|
|
32
|
+
"provenance": false
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/albsugy/aos.git"
|
|
25
37
|
},
|
|
26
38
|
"keywords": [
|
|
27
39
|
"ai-agents",
|
|
@@ -34,6 +46,6 @@
|
|
|
34
46
|
"license": "MIT",
|
|
35
47
|
"devDependencies": {
|
|
36
48
|
"esbuild": "^0.28.1",
|
|
37
|
-
"yaml": "^2.
|
|
49
|
+
"yaml": "^2.9.0"
|
|
38
50
|
}
|
|
39
51
|
}
|