@passioncode-ai/passioncode 0.1.29 → 0.1.30
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 +14 -0
- package/family.json +2 -2
- package/package.json +1 -1
- package/payload/.claude-plugin/marketplace.json +3 -3
- package/payload/manifest.json +12 -12
- package/payload/plugins/fabric-agent-adapter/.claude-plugin/plugin.json +1 -1
- package/payload/plugins/fabric-agent-adapter/skills/adapting-projects-to-fabric/SKILL.md +9 -3
- package/payload/plugins/fabric-agent-adapter/skills/adapting-projects-to-fabric/scripts/adapt_project.py +39 -10
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/SKILL.md +23 -10
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/lifecycle.md +77 -14
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/protocol.md +5 -3
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/surfaces-and-auth.md +6 -0
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/references/usage.md +63 -0
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/check_service.py +106 -3
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric-interop.mjs +42 -0
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric-service.mjs +317 -8
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric_interop.py +53 -1
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/fabric_service.py +472 -15
- package/payload/plugins/fabric-agent-adapter/skills/building-fabric-services/scripts/sample_service.py +23 -10
- package/payload/plugins/fabric-agent-adapter/skills/creating-fabric-agents/SKILL.md +7 -3
- package/payload/plugins/observatory-log/.claude-plugin/plugin.json +1 -1
- package/payload/plugins/observatory-log/hooks/session-start.sh +25 -11
- package/payload/plugins/observatory-log/skills/explaining-changes/SKILL.md +1 -1
- package/payload/plugins/observatory-log/skills/handling-secrets/SKILL.md +2 -2
- package/payload/plugins/observatory-log/skills/tracking-resources/SKILL.md +1 -1
- package/payload/plugins/passioncode/.claude-plugin/plugin.json +1 -1
|
@@ -5,9 +5,9 @@ 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.
|
|
8
|
+
version: "0.8.0"
|
|
9
9
|
contract-version: "0.1.0"
|
|
10
|
-
contract-commit: "
|
|
10
|
+
contract-commit: "23f9fda4c05f8a3852246ee98d4f2adf74ed0875"
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Creating Fabric-compatible agents
|
|
@@ -119,12 +119,16 @@ python3 <plugin-dir>/skills/adapting-projects-to-fabric/scripts/adapt_project.py
|
|
|
119
119
|
--schema-base <immutable-base-uri>
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
Pin exactly contract `0.1.0` at commit `
|
|
122
|
+
Pin exactly contract `0.1.0` at commit `23f9fda4c05f8a3852246ee98d4f2adf74ed0875` and
|
|
123
123
|
read the pinned guide before implementing protocol details. If this skill is installed
|
|
124
124
|
without its sibling, the scaffolder is absent: create the bundle by hand from the pinned
|
|
125
125
|
contract's `docs/guides/connecting-compatible-agents.md` and mark the structural check
|
|
126
126
|
`NOT_RUN` — do not reconstruct normative rules from memory.
|
|
127
127
|
|
|
128
|
+
This default accepts underscore capability names; a declared communications name does
|
|
129
|
+
not grant COM access or prove runtime admission. Existing bundles retain their explicit
|
|
130
|
+
supported revision and require its exact checkout; never silently migrate their lock.
|
|
131
|
+
|
|
128
132
|
The generated placeholders are deliberate blockers; a bundle still containing one is not
|
|
129
133
|
ready for admission.
|
|
130
134
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "observatory-log",
|
|
4
4
|
"displayName": "Observatory Log",
|
|
5
5
|
"description": "Records what changed in a watched project at the end of every turn, and asks for the one thing a diff cannot contain: why.",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.18.0",
|
|
7
7
|
"license": "AGPL-3.0-only OR LicenseRef-PassionCode-Commercial",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "PassionCode.ai",
|
|
@@ -47,17 +47,28 @@ fi
|
|
|
47
47
|
# rate-limited, so a session never waits for it and never fails because of it.
|
|
48
48
|
stamps="${XDG_STATE_HOME:-$HOME/.local/state}/project-observatory"
|
|
49
49
|
mkdir -p "$stamps" 2>/dev/null && chmod 700 "$stamps" 2>/dev/null
|
|
50
|
-
# claim NAME SECONDS: true for exactly one caller per window.
|
|
51
|
-
# sessions starting at once start one job, not twenty
|
|
50
|
+
# claim NAME SECONDS: true for exactly one caller per window. The check and the stamp happen
|
|
51
|
+
# under one exclusive lock, so twenty sessions starting at once start one job, not twenty —
|
|
52
|
+
# also when the previous window has just expired (audit A20).
|
|
52
53
|
claim() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
"$py" - "$stamps/$1.at" "$2" <<'PYCLAIM' 2>/dev/null
|
|
55
|
+
import fcntl, os, sys, time
|
|
56
|
+
path, window = sys.argv[1], int(sys.argv[2])
|
|
57
|
+
fd = os.open(path + ".lock", os.O_CREAT | os.O_RDWR, 0o600)
|
|
58
|
+
try:
|
|
59
|
+
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
60
|
+
except BlockingIOError:
|
|
61
|
+
sys.exit(1)
|
|
62
|
+
try:
|
|
63
|
+
last = os.stat(path).st_mtime
|
|
64
|
+
except OSError:
|
|
65
|
+
last = 0
|
|
66
|
+
if time.time() - last < window:
|
|
67
|
+
sys.exit(1)
|
|
68
|
+
with open(path, "a"):
|
|
69
|
+
pass
|
|
70
|
+
os.utime(path, None)
|
|
71
|
+
PYCLAIM
|
|
61
72
|
}
|
|
62
73
|
# detach LOG CMD...: a new session of its own, so ending this session or its process group
|
|
63
74
|
# cannot stop an install half-way (review F8).
|
|
@@ -93,7 +104,10 @@ print(1 if (d.get(\"updates\") or {}).get(\"auto\") is False else 0)" "$home/con
|
|
|
93
104
|
"$po" full update --check >/dev/null 2>&1; rc=$?
|
|
94
105
|
echo "$(date -u +%FT%TZ) check exit $rc"
|
|
95
106
|
[ "$rc" = "10" ] || exit 0
|
|
96
|
-
|
|
107
|
+
# No launchd (Linux): nothing for the update to stop, and saying so lets it run (A02).
|
|
108
|
+
if command -v launchctl >/dev/null 2>&1; then "$po" full update --apply
|
|
109
|
+
else "$po" full update --apply --writers-stopped; fi
|
|
110
|
+
echo "$(date -u +%FT%TZ) apply exit $?"
|
|
97
111
|
' _ "$po" "$py"
|
|
98
112
|
fi
|
|
99
113
|
fi
|
|
@@ -15,7 +15,7 @@ description: >-
|
|
|
15
15
|
decision with different evidence.
|
|
16
16
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
17
17
|
metadata:
|
|
18
|
-
version: "0.
|
|
18
|
+
version: "0.18.0"
|
|
19
19
|
compatibility: >-
|
|
20
20
|
Requires an initialized full Project Observatory installation to persist
|
|
21
21
|
records. Uses its MCP server when available in the current host; the bundled
|
|
@@ -10,7 +10,7 @@ description: >-
|
|
|
10
10
|
provider permissions or choosing a project's authentication architecture.
|
|
11
11
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
12
12
|
metadata:
|
|
13
|
-
version: "0.
|
|
13
|
+
version: "0.18.0"
|
|
14
14
|
compatibility: >-
|
|
15
15
|
Requires an initialized full Project Observatory installation, Python 3.11+
|
|
16
16
|
and local shell access on macOS or Linux. Provider operations additionally
|
|
@@ -30,7 +30,7 @@ names. Never ask the user to paste a credential into the conversation.
|
|
|
30
30
|
2. Select the user's initialized `OBSERVATORY_HOME`. Run
|
|
31
31
|
`project-observatory full doctor`. A missing workspace
|
|
32
32
|
needs the documented onboarding before secret operations.
|
|
33
|
-
3. Run `"$OBSERVATORY_PYTHON" "$OBSERVATORY_ROOT/tools/skill_check.py" handling-secrets 0.
|
|
33
|
+
3. Run `"$OBSERVATORY_PYTHON" "$OBSERVATORY_ROOT/tools/skill_check.py" handling-secrets 0.18.0`
|
|
34
34
|
(`full agent install` records that interpreter; the stock macOS `python3` is too old).
|
|
35
35
|
If stale, read the installed skill once and follow its compatible commands.
|
|
36
36
|
Do not turn an unavailable version check into a retry loop.
|
|
@@ -15,7 +15,7 @@ description: >-
|
|
|
15
15
|
the repository.
|
|
16
16
|
license: AGPL-3.0-only OR LicenseRef-PassionCode-Commercial
|
|
17
17
|
metadata:
|
|
18
|
-
version: "0.
|
|
18
|
+
version: "0.18.0"
|
|
19
19
|
compatibility: >-
|
|
20
20
|
Requires a full Project Observatory installation with organizations.json
|
|
21
21
|
configured; the observatory MCP server or its local CLI. Creating the resource
|
|
@@ -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.
|
|
5
|
+
"version": "0.1.30",
|
|
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",
|