@passioncode-ai/passioncode 0.1.26 → 0.1.27

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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.27 - 2026-10-04
4
+
5
+ ### Changed
6
+
7
+ - **Fabric Agent Adapter is pinned at `v0.6.3`** (it was `v0.6.2`). `building-fabric-services`
8
+ and `creating-fabric-agents` say that every credential an agent or service uses comes from
9
+ Project Observatory, by name: `use_secret.py run --vault-only` for an agent, `use_secret.py
10
+ serve` for a long-running service, never a `.env` or a key file beside it.
11
+
3
12
  ## 0.1.26 - 2026-10-04
4
13
 
5
14
  ### Changed
package/family.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "name": "fabric-agent-adapter",
9
9
  "displayName": "Fabric Agent Adapter",
10
10
  "repo": "passioncode-ai/fabric-agent-adapter",
11
- "ref": "v0.6.2",
11
+ "ref": "v0.6.3",
12
12
  "kind": "plugin",
13
13
  "path": "plugins/fabric-agent-adapter",
14
14
  "legacyPluginIds": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@passioncode-ai/passioncode",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "description": "The PassionCode.ai agent skill set \u2014 Fabric Agent Adapter, Observatory Log and the organisation's working rules \u2014 for Claude Code and every other agent on the machine, updated as one set.",
5
5
  "bin": {
6
6
  "passioncode": "bin/passioncode.js"
@@ -11,7 +11,7 @@
11
11
  "name": "fabric-agent-adapter",
12
12
  "displayName": "Fabric Agent Adapter",
13
13
  "source": "./plugins/fabric-agent-adapter",
14
- "version": "0.6.2",
14
+ "version": "0.6.3",
15
15
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
16
16
  "author": {
17
17
  "name": "PassionCode.ai",
@@ -35,7 +35,7 @@
35
35
  "name": "passioncode",
36
36
  "displayName": "PassionCode.ai",
37
37
  "source": "./plugins/passioncode",
38
- "version": "0.1.26",
38
+ "version": "0.1.27",
39
39
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
40
40
  "author": {
41
41
  "name": "PassionCode.ai",
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "family": "passioncode",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "release": true,
5
5
  "members": [
6
6
  {
7
7
  "name": "fabric-agent-adapter",
8
8
  "displayName": "Fabric Agent Adapter",
9
9
  "repo": "passioncode-ai/fabric-agent-adapter",
10
- "ref": "v0.6.2",
11
- "commit": "4b435baac85e343b530af86d56f8b75ac406bc43",
12
- "version": "0.6.2",
10
+ "ref": "v0.6.3",
11
+ "commit": "30a1148ba77fe9ed56ea98c218d10ccf2fadf084",
12
+ "version": "0.6.3",
13
13
  "via": "clone of https://***@github.com/passioncode-ai/fabric-agent-adapter.git",
14
14
  "skills": [
15
15
  "adapting-projects-to-fabric",
@@ -22,7 +22,7 @@
22
22
  "legacyMarketplaces": [
23
23
  "fabric-agent-adapter"
24
24
  ],
25
- "contentHash": "sha256:95fab0fdf3ee1f9171fc7c07edd60313cf52ddb68bb2eb456caf1df8afde36cb",
25
+ "contentHash": "sha256:264191fab8632a4f720185c68f79ca74c8fba1a14e50fd2d68957a35303c9c4b",
26
26
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
27
27
  "author": {
28
28
  "name": "PassionCode.ai",
@@ -61,16 +61,16 @@
61
61
  "name": "passioncode",
62
62
  "displayName": "PassionCode.ai",
63
63
  "repo": "passioncode-ai/passioncode",
64
- "ref": "v0.1.26",
64
+ "ref": "v0.1.27",
65
65
  "commit": null,
66
- "version": "0.1.26",
66
+ "version": "0.1.27",
67
67
  "via": "this repository",
68
68
  "skills": [
69
69
  "working-in-passioncode"
70
70
  ],
71
71
  "legacyPluginIds": [],
72
72
  "legacyMarketplaces": [],
73
- "contentHash": "sha256:01035ebeb36b330a3eabad618a5dbd6f8b826b0d008ffc3651db1c9dca932deb",
73
+ "contentHash": "sha256:91e32c96a96c8c9cecd011b75074f99e90a8df354169a892658ca15931efe434",
74
74
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check that keeps the PassionCode.ai set current.",
75
75
  "author": {
76
76
  "name": "PassionCode.ai",
@@ -3,7 +3,7 @@
3
3
  "name": "fabric-agent-adapter",
4
4
  "displayName": "Fabric Agent Adapter",
5
5
  "description": "Create new Fabric-compatible agents, build them as always-alive local services with dashboards (fabric-service/0.1), and adapt existing projects to the Fabric Agent Contract through evidence-backed MCP, A2A, or local-runner provider bundles.",
6
- "version": "0.6.2",
6
+ "version": "0.6.3",
7
7
  "author": {
8
8
  "name": "PassionCode.ai",
9
9
  "url": "https://passioncode.ai/"
@@ -5,7 +5,7 @@ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
5
5
  compatibility: Requires filesystem access and Python 3.9+. Exact schema checks additionally need git, Node.js, pnpm, and the pinned fabric-agent-contract checkout (a public repository). Works without those tools in an explicitly degraded structural-check mode.
6
6
  metadata:
7
7
  author: PassionCode.ai
8
- version: "0.6.2"
8
+ version: "0.6.3"
9
9
  contract-version: "0.1.0"
10
10
  contract-commit: "2ce392291c6668598d12cd38327e24696b5ca15c"
11
11
  ---
@@ -15,7 +15,7 @@ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
15
15
  compatibility: Python 3.9+ or Node.js 20+ for the kits; the probe needs Python 3.9+. launchd steps are macOS-only (Linux services use lifecycle manager none until a systemd adapter exists). Dashboard handoff optionally uses Fabric Dashboards MCP link/host_status/open; without it, report unresolved host capability. The contract checkout is optional.
16
16
  metadata:
17
17
  author: PassionCode.ai
18
- version: "0.6.2"
18
+ version: "0.6.3"
19
19
  contract-version: "0.1.0"
20
20
  extension: "fabric-service/0.1"
21
21
  extension-commit: "2ce392291c6668598d12cd38327e24696b5ca15c"
@@ -101,8 +101,12 @@ are in [`scripts/fabric_interop.py`](scripts/fabric_interop.py) and
101
101
  digest and the process start time. *(A service ran on stale code after an edit and
102
102
  burned budget; nothing showed which build was answering.)*
103
103
  5. **State outside code.** Data and config in `~/Library/Application Support/<id>/`,
104
- logs in `~/Library/Logs/<id>/`, cache in `~/Library/Caches/<id>/`; secrets in a 0600
105
- file. Never inside the service's own code checkout or a release directory; a
104
+ logs in `~/Library/Logs/<id>/`, cache in `~/Library/Caches/<id>/`; the service's own
105
+ access token in a 0600 file it generates (principle 6). **Every provider credential the
106
+ service uses comes from Project Observatory, by name** — the plist starts the service
107
+ with `use_secret.py serve --consumer <label> <project> <NAME>[,<NAME>] -- <command>`, which
108
+ reads the vault only and records the consumer so a rotation names it; never a copy of a
109
+ key in a `.env`, a config file or the plist. Never inside the service's own code checkout or a release directory; a
106
110
  repository that versions the data itself is a store and is fine — declare
107
111
  `source.repository` so the probe can tell them apart. *(Deleting a checkout left a
108
112
  plist launchd retried every 10 s, and the data went with it.)*
@@ -254,7 +258,10 @@ things change and the kits implement each:
254
258
  example is [`scripts/sample-remote-service.mjs`](scripts/sample-remote-service.mjs): it runs
255
259
  with its own TLS or behind a platform router.
256
260
  2. **Secrets live on the platform:** the service token and the session key (32 bytes) are
257
- platform secrets, never in the repository, a URL or an argument vector.
261
+ platform secrets, never in the repository, a URL or an argument vector. A provider key the
262
+ remote service needs is issued and kept in Project Observatory, pushed to the platform, and
263
+ the movement recorded with `vault.py moved --at <provider>`, so the platform's copy is
264
+ known rather than invisible.
258
265
  3. **Register it on the operator's computer** — the installer side, run there:
259
266
  `registerRemote({ id, name, origin, token })` / `register_remote(...)` writes the token file
260
267
  (0600) and the descriptor; pass the token from a file or stdin, never in argv. Public names
@@ -5,7 +5,7 @@ license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
5
5
  compatibility: Requires filesystem access and Python 3.9+. Exact schema checks additionally need git, Node.js, pnpm, and the pinned fabric-agent-contract checkout (a public repository). Works without those tools in an explicitly degraded structural-check mode. Ships in one plugin with adapting-projects-to-fabric, whose scripts it reuses.
6
6
  metadata:
7
7
  author: PassionCode.ai
8
- version: "0.6.2"
8
+ version: "0.6.3"
9
9
  contract-version: "0.1.0"
10
10
  contract-commit: "2ce392291c6668598d12cd38327e24696b5ca15c"
11
11
  ---
@@ -94,6 +94,13 @@ first commit:
94
94
  - an `AGENTS.md` that opens with the template's *Read first* block and closes with *After work*,
95
95
  and a `CLAUDE.md` whose first line is `@AGENTS.md`.
96
96
 
97
+ **Every credential the agent uses comes from Project Observatory, by name**, from its first
98
+ commit: the README's Configure section lists key NAMES; the agent finds them with
99
+ `observatory_credentials` and runs with `use_secret.py run --vault-only` (a long-running
100
+ service: `use_secret.py serve`), with `OBSERVATORY_VAULT_ONLY=1` in its environment. No `.env`
101
+ of its own, no key file beside its data, no value in code, configuration or a commit. A
102
+ workflow names the keys it needs in its checkpoint (`credentials`), never their values.
103
+
97
104
  org-index `scripts/check_format.py` reports 0 findings for it before it is called done. **An agent
98
105
  someone builds for themselves is not a PassionCode.ai repository:** its licence is its owner's
99
106
  choice, nothing about it is published or listed by the organization, and none of these files is
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "passioncode",
4
4
  "displayName": "PassionCode.ai",
5
- "version": "0.1.26",
5
+ "version": "0.1.27",
6
6
  "description": "The organisation's working rules for every contributor's agent (working-in-passioncode), and a once-a-day check at session start that keeps the PassionCode.ai skill set current.",
7
7
  "author": {
8
8
  "name": "PassionCode.ai",