@aporthq/aport-agent-guardrails 1.0.8
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/LICENSE +217 -0
- package/README.md +481 -0
- package/bin/agent-guardrails +133 -0
- package/bin/aport-create-passport.sh +444 -0
- package/bin/aport-cursor-hook.sh +90 -0
- package/bin/aport-guardrail-api.sh +108 -0
- package/bin/aport-guardrail-bash.sh +394 -0
- package/bin/aport-guardrail-v2.sh +5 -0
- package/bin/aport-guardrail.sh +5 -0
- package/bin/aport-resolve-paths.sh +71 -0
- package/bin/aport-status.sh +276 -0
- package/bin/frameworks/crewai.sh +49 -0
- package/bin/frameworks/cursor.sh +95 -0
- package/bin/frameworks/langchain.sh +48 -0
- package/bin/frameworks/n8n.sh +36 -0
- package/bin/frameworks/openclaw.sh +19 -0
- package/bin/lib/allowlist.sh +18 -0
- package/bin/lib/common.sh +28 -0
- package/bin/lib/config.sh +46 -0
- package/bin/lib/constants.sh +232 -0
- package/bin/lib/detect.sh +65 -0
- package/bin/lib/error.sh +269 -0
- package/bin/lib/passport.sh +19 -0
- package/bin/lib/templates/.gitkeep +1 -0
- package/bin/lib/templates/config.yaml +6 -0
- package/bin/lib/validation.sh +206 -0
- package/bin/openclaw +660 -0
- package/docs/ADDING_A_FRAMEWORK.md +87 -0
- package/docs/AGENTS.md.example +40 -0
- package/docs/CODE_REVIEW.md +192 -0
- package/docs/DEPLOYMENT_READINESS.md +81 -0
- package/docs/FAQ_SECURITY_SCANNERS.md +373 -0
- package/docs/FRAMEWORK_ROADMAP.md +41 -0
- package/docs/HOSTED_PASSPORT_SETUP.md +362 -0
- package/docs/IMPLEMENTING_YOUR_OWN_EVALUATOR.md +433 -0
- package/docs/OPENCLAW_COMPATIBILITY.md +73 -0
- package/docs/OPENCLAW_LOCAL_INTEGRATION.md +596 -0
- package/docs/OPENCLAW_TOOLS_AND_POLICIES.md +54 -0
- package/docs/QUICKSTART.md +470 -0
- package/docs/QUICKSTART_OPENCLAW_PLUGIN.md +470 -0
- package/docs/README.md +28 -0
- package/docs/RELEASE.md +87 -0
- package/docs/REPO_LAYOUT.md +47 -0
- package/docs/SKILLS_ECOSYSTEM_ANALYSIS_FEB17.md +1260 -0
- package/docs/TOOL_POLICY_MAPPING.md +46 -0
- package/docs/UPGRADE.md +46 -0
- package/docs/VERIFICATION_METHODS.md +97 -0
- package/docs/assets/README.md +8 -0
- package/docs/assets/porter.svg +54 -0
- package/docs/development/ERROR_CODES.md +616 -0
- package/docs/frameworks/GITHUB_ISSUE_PROPOSALS.md +1105 -0
- package/docs/frameworks/crewai.md +114 -0
- package/docs/frameworks/cursor.md +159 -0
- package/docs/frameworks/langchain.md +72 -0
- package/docs/frameworks/n8n.md +40 -0
- package/docs/frameworks/openclaw.md +40 -0
- package/docs/launch/ADD_APORT_AWESOME_LISTS_INSTRUCTIONS.md +146 -0
- package/docs/launch/ANNOUNCEMENT_GUIDE.md +266 -0
- package/docs/launch/AWESOME_REPOS.md +53 -0
- package/docs/launch/CURSOR_VSCODE_HOOKS_RESEARCH.md +77 -0
- package/docs/launch/DEMO_TERMINAL_OUTPUT.txt +48 -0
- package/docs/launch/DRY_AND_PLAN_CHECKLIST.md +47 -0
- package/docs/launch/EVIDENCE_README.md +61 -0
- package/docs/launch/EVIDENCE_TERMINAL_CAPTURE.txt +10 -0
- package/docs/launch/FRAMEWORK_SUPPORT_PLAN.md +1640 -0
- package/docs/launch/LAUNCH_READINESS_CHECKLIST.md +237 -0
- package/docs/launch/LAUNCH_STRATEGY_SUMMARY.md +464 -0
- package/docs/launch/OPENCLAW_FEEDBACK_AND_FIXES.md +85 -0
- package/docs/launch/POST_1_VALENTINE_IMPROVED.md +233 -0
- package/docs/launch/POST_2_GUARDRAIL_IMPROVED.md +369 -0
- package/docs/launch/PRE_LAUNCH_FIXES.md +766 -0
- package/docs/launch/QUICK_LAUNCH_CHECKLIST.md +400 -0
- package/docs/launch/READINESS_SUMMARY.md +262 -0
- package/docs/launch/README.md +68 -0
- package/docs/launch/USER_STORIES.md +327 -0
- package/docs/launch/scripts/add-aport-awesome-pr.sh +69 -0
- package/docs/operations/MONITORING.md +588 -0
- package/docs/reviews/2026-02-18-staff-review.md +268 -0
- package/extensions/openclaw-aport/README.md +415 -0
- package/extensions/openclaw-aport/index.js +625 -0
- package/extensions/openclaw-aport/openclaw-aport.js +7 -0
- package/extensions/openclaw-aport/openclaw.plugin.json +46 -0
- package/extensions/openclaw-aport/package.json +36 -0
- package/extensions/openclaw-aport/test.js +307 -0
- package/external/aport-policies/README.md +363 -0
- package/external/aport-policies/agent.session.create.v1/README.md +345 -0
- package/external/aport-policies/agent.session.create.v1/policy.json +162 -0
- package/external/aport-policies/agent.tool.register.v1/README.md +361 -0
- package/external/aport-policies/agent.tool.register.v1/policy.json +172 -0
- package/external/aport-policies/code.release.publish.v1/README.md +51 -0
- package/external/aport-policies/code.release.publish.v1/policy.json +121 -0
- package/external/aport-policies/code.repository.merge.v1/README.md +287 -0
- package/external/aport-policies/code.repository.merge.v1/express.example.js +332 -0
- package/external/aport-policies/code.repository.merge.v1/fastapi.example.py +370 -0
- package/external/aport-policies/code.repository.merge.v1/policy.json +162 -0
- package/external/aport-policies/data.export.create.v1/README.md +226 -0
- package/external/aport-policies/data.export.create.v1/express.example.js +172 -0
- package/external/aport-policies/data.export.create.v1/fastapi.example.py +165 -0
- package/external/aport-policies/data.export.create.v1/policy.json +133 -0
- package/external/aport-policies/data.report.ingest.v1/README.md +134 -0
- package/external/aport-policies/data.report.ingest.v1/express.example.js +105 -0
- package/external/aport-policies/data.report.ingest.v1/minimal-example.js +68 -0
- package/external/aport-policies/data.report.ingest.v1/policy.json +174 -0
- package/external/aport-policies/finance.crypto.trade.v1/README.md +146 -0
- package/external/aport-policies/finance.crypto.trade.v1/express.example.js +109 -0
- package/external/aport-policies/finance.crypto.trade.v1/minimal-example.js +65 -0
- package/external/aport-policies/finance.crypto.trade.v1/policy.json +176 -0
- package/external/aport-policies/finance.payment.charge.v1/README.md +326 -0
- package/external/aport-policies/finance.payment.charge.v1/express.example.js +250 -0
- package/external/aport-policies/finance.payment.charge.v1/fastapi.example.py +227 -0
- package/external/aport-policies/finance.payment.charge.v1/minimal-example.js +64 -0
- package/external/aport-policies/finance.payment.charge.v1/policy.json +224 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/passport.instance.json +42 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/passport.template.json +40 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/payments-charge-policy.test.js +817 -0
- package/external/aport-policies/finance.payment.charge.v1/tests/test_payments_charge_policy.py +486 -0
- package/external/aport-policies/finance.payment.payout.v1/README.md +78 -0
- package/external/aport-policies/finance.payment.payout.v1/policy.json +181 -0
- package/external/aport-policies/finance.payment.refund.v1/README.md +275 -0
- package/external/aport-policies/finance.payment.refund.v1/express.example.js +167 -0
- package/external/aport-policies/finance.payment.refund.v1/fastapi.example.py +136 -0
- package/external/aport-policies/finance.payment.refund.v1/minimal-example.js +183 -0
- package/external/aport-policies/finance.payment.refund.v1/policy.json +216 -0
- package/external/aport-policies/finance.payment.refund.v1/tests/refunds-policy.test.js +924 -0
- package/external/aport-policies/finance.payment.refund.v1/tests/test_refunds_policy.py +778 -0
- package/external/aport-policies/finance.transaction.execute.v1/README.md +309 -0
- package/external/aport-policies/finance.transaction.execute.v1/express.example.js +261 -0
- package/external/aport-policies/finance.transaction.execute.v1/fastapi.example.py +231 -0
- package/external/aport-policies/finance.transaction.execute.v1/minimal-example.js +78 -0
- package/external/aport-policies/finance.transaction.execute.v1/policy.json +189 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/passport.instance.json +42 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/passport.template.json +42 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/test_transactions_policy.py +214 -0
- package/external/aport-policies/finance.transaction.execute.v1/tests/transactions-policy.test.js +306 -0
- package/external/aport-policies/governance.data.access.v1/README.md +292 -0
- package/external/aport-policies/governance.data.access.v1/express.example.js +321 -0
- package/external/aport-policies/governance.data.access.v1/fastapi.example.py +279 -0
- package/external/aport-policies/governance.data.access.v1/minimal-example.js +65 -0
- package/external/aport-policies/governance.data.access.v1/policy.json +208 -0
- package/external/aport-policies/governance.data.access.v1/tests/contexts.jsonl +12 -0
- package/external/aport-policies/governance.data.access.v1/tests/data-access-policy.test.js +308 -0
- package/external/aport-policies/governance.data.access.v1/tests/expected.jsonl +12 -0
- package/external/aport-policies/governance.data.access.v1/tests/passport.instance.json +56 -0
- package/external/aport-policies/governance.data.access.v1/tests/passport.template.json +56 -0
- package/external/aport-policies/governance.data.access.v1/tests/test_data_access_policy.py +214 -0
- package/external/aport-policies/legal.contract.review.v1/README.md +109 -0
- package/external/aport-policies/legal.contract.review.v1/policy.json +378 -0
- package/external/aport-policies/legal.contract.review.v1/tests/legal-contract-review-policy.test.js +609 -0
- package/external/aport-policies/legal.contract.review.v1/tests/passport.template.json +49 -0
- package/external/aport-policies/mcp.tool.execute.v1/README.md +301 -0
- package/external/aport-policies/mcp.tool.execute.v1/policy.json +141 -0
- package/external/aport-policies/messaging.message.send.v1/README.md +230 -0
- package/external/aport-policies/messaging.message.send.v1/express.example.js +183 -0
- package/external/aport-policies/messaging.message.send.v1/fastapi.example.py +193 -0
- package/external/aport-policies/messaging.message.send.v1/policy.json +144 -0
- package/external/aport-policies/policy-template.json +107 -0
- package/external/aport-policies/system.command.execute.v1/README.md +275 -0
- package/external/aport-policies/system.command.execute.v1/policy.json +146 -0
- package/external/aport-spec/CONTRIBUTING.md +273 -0
- package/external/aport-spec/LICENSE +21 -0
- package/external/aport-spec/README.md +168 -0
- package/external/aport-spec/conformance/README.md +294 -0
- package/external/aport-spec/conformance/cases/data.export.v1/contexts/allow_users.json +6 -0
- package/external/aport-spec/conformance/cases/data.export.v1/contexts/deny_pii.json +6 -0
- package/external/aport-spec/conformance/cases/data.export.v1/expected/allow_users.decision.json +19 -0
- package/external/aport-spec/conformance/cases/data.export.v1/expected/deny_pii.decision.json +19 -0
- package/external/aport-spec/conformance/cases/data.export.v1/passports/template.json +29 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/allow_50usd.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/deny_150usd.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/contexts/deny_currency.json +9 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/allow_50usd.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/deny_150usd.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/expected/deny_currency.decision.json +19 -0
- package/external/aport-spec/conformance/cases/payments.refunds.v1/passports/template.json +42 -0
- package/external/aport-spec/conformance/package.json +44 -0
- package/external/aport-spec/conformance/pnpm-lock.yaml +642 -0
- package/external/aport-spec/conformance/src/cases.ts +371 -0
- package/external/aport-spec/conformance/src/ed25519.ts +167 -0
- package/external/aport-spec/conformance/src/jcs.ts +85 -0
- package/external/aport-spec/conformance/src/runner.ts +533 -0
- package/external/aport-spec/conformance/src/validators.ts +185 -0
- package/external/aport-spec/conformance/test-runner.js +315 -0
- package/external/aport-spec/conformance/tsconfig.json +21 -0
- package/external/aport-spec/error-schema.json +192 -0
- package/external/aport-spec/index.json +12 -0
- package/external/aport-spec/integrations/clawmoat/README.md +12 -0
- package/external/aport-spec/integrations/shield/README.md +245 -0
- package/external/aport-spec/integrations/shield/adapters/index.js +116 -0
- package/external/aport-spec/integrations/shield/adapters/system-command-execute.js +133 -0
- package/external/aport-spec/integrations/shield/test/README.md +58 -0
- package/external/aport-spec/integrations/shield/test/shield.md +40 -0
- package/external/aport-spec/integrations/shield/test/test-shield-to-verify.js +274 -0
- package/external/aport-spec/metrics-schema.json +504 -0
- package/external/aport-spec/oap/CHANGELOG.md +54 -0
- package/external/aport-spec/oap/VERSION.md +40 -0
- package/external/aport-spec/oap/capability-registry.md +229 -0
- package/external/aport-spec/oap/conformance.md +257 -0
- package/external/aport-spec/oap/decision-schema.json +114 -0
- package/external/aport-spec/oap/examples/context.refund.usd.50.json +9 -0
- package/external/aport-spec/oap/examples/decision.allow.sample.json +20 -0
- package/external/aport-spec/oap/examples/decision.deny.sample.json +23 -0
- package/external/aport-spec/oap/examples/passport.instance.v1.json +50 -0
- package/external/aport-spec/oap/examples/passport.template.v1.json +71 -0
- package/external/aport-spec/oap/oap-spec.md +426 -0
- package/external/aport-spec/oap/passport-schema.json +396 -0
- package/external/aport-spec/oap/security.md +213 -0
- package/external/aport-spec/oap/vc/context-oap-v1.jsonld +137 -0
- package/external/aport-spec/oap/vc/examples/oap-decision-vc.json +37 -0
- package/external/aport-spec/oap/vc/examples/oap-passport-vc.json +68 -0
- package/external/aport-spec/oap/vc/tools/INTEGRATION.md +375 -0
- package/external/aport-spec/oap/vc/tools/README.md +278 -0
- package/external/aport-spec/oap/vc/tools/examples/decision-to-vc.js +66 -0
- package/external/aport-spec/oap/vc/tools/examples/passport-to-vc.js +83 -0
- package/external/aport-spec/oap/vc/tools/examples/vc-to-decision.js +77 -0
- package/external/aport-spec/oap/vc/tools/examples/vc-to-passport.js +94 -0
- package/external/aport-spec/oap/vc/tools/package.json +38 -0
- package/external/aport-spec/oap/vc/tools/pnpm-lock.yaml +472 -0
- package/external/aport-spec/oap/vc/tools/src/cli.ts +226 -0
- package/external/aport-spec/oap/vc/tools/src/crypto-utils.ts +427 -0
- package/external/aport-spec/oap/vc/tools/src/index.ts +653 -0
- package/external/aport-spec/oap/vc/tools/src/test.ts +148 -0
- package/external/aport-spec/oap/vc/tools/src/vp.ts +382 -0
- package/external/aport-spec/oap/vc/tools/test-simple.js +214 -0
- package/external/aport-spec/oap/vc/tools/tsconfig.json +19 -0
- package/external/aport-spec/oap/vc/vc-mapping.md +443 -0
- package/external/aport-spec/passport-schema.json +586 -0
- package/external/aport-spec/rate-limiting.md +136 -0
- package/external/aport-spec/transport-profile.md +325 -0
- package/external/aport-spec/webhook-spec.md +314 -0
- package/package.json +70 -0
- package/skills/aport-agent-guardrail/SKILL.md +314 -0
- package/src/evaluator.js +252 -0
- package/src/server/index.js +72 -0
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
# Pre-Launch Fixes & Improvements
|
|
2
|
+
|
|
3
|
+
**Repository Readiness Assessment: 82/100**
|
|
4
|
+
|
|
5
|
+
This document provides a ranked list of fixes and improvements to take the aport-agent-guardrails repository to 100/100 launch readiness. Items are ranked by impact, criticality, and ROI for implementation.
|
|
6
|
+
|
|
7
|
+
**Current Status:**
|
|
8
|
+
- ✅ All 9 tests passing
|
|
9
|
+
- ✅ Core functionality complete (local + API modes)
|
|
10
|
+
- ✅ Comprehensive documentation
|
|
11
|
+
- ✅ OpenClaw plugin implementation (545 lines, well-tested)
|
|
12
|
+
- ⚠️ Missing standard repository files
|
|
13
|
+
- ⚠️ Version mismatch between packages
|
|
14
|
+
- ⚠️ Launch execution gate not fully satisfied
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🔴 CRITICAL (Blockers - Must Fix Before Public Launch)
|
|
19
|
+
|
|
20
|
+
### 1. **Add SECURITY.md** ⭐⭐⭐⭐⭐
|
|
21
|
+
**Impact:** Critical for GitHub trust indicators & security best practices
|
|
22
|
+
**Effort:** 15 minutes
|
|
23
|
+
**ROI:** Very High
|
|
24
|
+
|
|
25
|
+
**Why:** GitHub shows a security tab; missing SECURITY.md looks unprofessional. Required for responsible disclosure.
|
|
26
|
+
|
|
27
|
+
**Action:**
|
|
28
|
+
```bash
|
|
29
|
+
# Create /Users/uchi/Downloads/projects/aport-agent-guardrails/SECURITY.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Content template:**
|
|
33
|
+
```markdown
|
|
34
|
+
# Security Policy
|
|
35
|
+
|
|
36
|
+
## Supported Versions
|
|
37
|
+
|
|
38
|
+
| Version | Supported |
|
|
39
|
+
| ------- | ------------------ |
|
|
40
|
+
| 1.0.x | :white_check_mark: |
|
|
41
|
+
| 0.1.x | :white_check_mark: |
|
|
42
|
+
|
|
43
|
+
## Reporting a Vulnerability
|
|
44
|
+
|
|
45
|
+
**DO NOT** open public GitHub issues for security vulnerabilities.
|
|
46
|
+
|
|
47
|
+
Please report security vulnerabilities to: security@aport.io
|
|
48
|
+
|
|
49
|
+
Include:
|
|
50
|
+
- Description of the vulnerability
|
|
51
|
+
- Steps to reproduce
|
|
52
|
+
- Potential impact
|
|
53
|
+
- Suggested fix (if any)
|
|
54
|
+
|
|
55
|
+
We aim to respond within 48 hours and provide a fix within 7 days for critical issues.
|
|
56
|
+
|
|
57
|
+
## Security Features
|
|
58
|
+
|
|
59
|
+
- **Fail-closed by default**: Errors block tool execution
|
|
60
|
+
- **Tamper-evident audit logs**: SHA-256 content hashing
|
|
61
|
+
- **Deterministic enforcement**: Platform-level, AI cannot bypass
|
|
62
|
+
- **Local-first option**: No network dependency required
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### 2. **Fix Version Mismatch Between Packages** ⭐⭐⭐⭐⭐
|
|
68
|
+
**Impact:** Critical - Confusing for users, breaks npm publish expectations
|
|
69
|
+
**Effort:** 2 minutes
|
|
70
|
+
**ROI:** Very High
|
|
71
|
+
|
|
72
|
+
**Issue:** Root package.json shows `v0.1.0` but plugin package shows `v1.0.0`
|
|
73
|
+
|
|
74
|
+
**Files:**
|
|
75
|
+
- `/Users/uchi/Downloads/projects/aport-agent-guardrails/package.json` → version: "0.1.0"
|
|
76
|
+
- `/Users/uchi/Downloads/projects/aport-agent-guardrails/extensions/openclaw-aport/package.json` → version: "1.0.0"
|
|
77
|
+
|
|
78
|
+
**Recommendation:** Sync both to `1.0.0` for launch (you're ready for 1.0, not 0.1)
|
|
79
|
+
|
|
80
|
+
**Action:**
|
|
81
|
+
```json
|
|
82
|
+
// In package.json, change line 3:
|
|
83
|
+
"version": "1.0.0"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Rationale:**
|
|
87
|
+
- All tests passing
|
|
88
|
+
- Documentation complete
|
|
89
|
+
- Production-ready features
|
|
90
|
+
- Launch-ready = 1.0.0
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 3. **Verify Repository is Public** ⭐⭐⭐⭐⭐
|
|
95
|
+
**Impact:** Critical - Can't launch if repo is private
|
|
96
|
+
**Effort:** 30 seconds
|
|
97
|
+
**ROI:** Infinite
|
|
98
|
+
|
|
99
|
+
**Current Status:** Unknown (per QUICK_LAUNCH_CHECKLIST.md, repo may still be private)
|
|
100
|
+
|
|
101
|
+
**Action:**
|
|
102
|
+
1. Go to GitHub repo settings
|
|
103
|
+
2. Make repository public
|
|
104
|
+
3. Verify: https://github.com/aporthq/aport-agent-guardrails (should not 404)
|
|
105
|
+
4. Test all README links work
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### 4. **Complete Launch Execution Gate** ⭐⭐⭐⭐⭐
|
|
110
|
+
**Impact:** Critical - Per LAUNCH_READINESS_CHECKLIST.md, cannot claim "5-minute setup" without this
|
|
111
|
+
**Effort:** 30 minutes (testing + screenshot)
|
|
112
|
+
**ROI:** Very High (prevents embarrassing launch failures)
|
|
113
|
+
|
|
114
|
+
**Per docs/launch/LAUNCH_READINESS_CHECKLIST.md:119-128, must verify:**
|
|
115
|
+
|
|
116
|
+
- [ ] Passport allows normal commands (installer sets `allowed_commands: ["*"]`)
|
|
117
|
+
- [ ] Plugin config correct (paths to guardrail script and passport)
|
|
118
|
+
- [ ] No policy denials for normal use (mkdir, ls, etc. get ALLOW)
|
|
119
|
+
- [ ] Messaging works (if claimed in launch post)
|
|
120
|
+
- [ ] **Evidence artifact captured** (screenshot showing ALLOW + DENY)
|
|
121
|
+
|
|
122
|
+
**Action:**
|
|
123
|
+
1. Run: `./bin/openclaw` to verify setup works end-to-end
|
|
124
|
+
2. Test: `~/.openclaw/.skills/aport-guardrail.sh system.command.execute '{"command":"mkdir test"}'` → should show ALLOW
|
|
125
|
+
3. Test: `~/.openclaw/.skills/aport-guardrail.sh system.command.execute '{"command":"rm -rf /"}'` → should show DENY
|
|
126
|
+
4. **Capture screenshot** of terminal showing both results
|
|
127
|
+
5. Save to `docs/launch/evidence-allow-deny.png`
|
|
128
|
+
|
|
129
|
+
**Do not launch guardrail post without this screenshot.**
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🟠 HIGH PRIORITY (Strong Impact - Fix Before/During Launch Week)
|
|
134
|
+
|
|
135
|
+
### 5. **Add CODE_OF_CONDUCT.md** ⭐⭐⭐⭐
|
|
136
|
+
**Impact:** High - Community health indicator, GitHub badge
|
|
137
|
+
**Effort:** 10 minutes
|
|
138
|
+
**ROI:** High
|
|
139
|
+
|
|
140
|
+
**Why:** Shows project is community-friendly; GitHub displays badge
|
|
141
|
+
|
|
142
|
+
**Action:**
|
|
143
|
+
Use Contributor Covenant (standard):
|
|
144
|
+
```bash
|
|
145
|
+
curl https://www.contributor-covenant.org/version/2/1/code_of_conduct/code_of_conduct.md -o CODE_OF_CONDUCT.md
|
|
146
|
+
# Then edit contact email to: conduct@aport.io
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### 6. **Add .npmignore** ⭐⭐⭐⭐
|
|
152
|
+
**Impact:** High - Prevents publishing unnecessary files to npm
|
|
153
|
+
**Effort:** 5 minutes
|
|
154
|
+
**ROI:** High
|
|
155
|
+
|
|
156
|
+
**Why:** Without this, `npm publish` includes test fixtures, launch docs, etc. (bloat)
|
|
157
|
+
|
|
158
|
+
**Action:**
|
|
159
|
+
Create `/Users/uchi/Downloads/projects/aport-agent-guardrails/.npmignore`:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
# Development
|
|
163
|
+
.git
|
|
164
|
+
.github
|
|
165
|
+
.gitignore
|
|
166
|
+
.gitmodules
|
|
167
|
+
|
|
168
|
+
# Tests
|
|
169
|
+
tests/
|
|
170
|
+
*.test.js
|
|
171
|
+
test.js
|
|
172
|
+
|
|
173
|
+
# Docs (launch-specific)
|
|
174
|
+
docs/launch/
|
|
175
|
+
_plan/
|
|
176
|
+
APORT_GOOSE_ARCHITECTURE.md
|
|
177
|
+
|
|
178
|
+
# Examples (keep in repo, exclude from npm)
|
|
179
|
+
examples/
|
|
180
|
+
|
|
181
|
+
# Build artifacts
|
|
182
|
+
node_modules/
|
|
183
|
+
*.log
|
|
184
|
+
.DS_Store
|
|
185
|
+
|
|
186
|
+
# Local overrides
|
|
187
|
+
local-overrides/
|
|
188
|
+
|
|
189
|
+
# External (submodules - users should git clone, not npm install)
|
|
190
|
+
external/
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Also create for plugin:** `/Users/uchi/Downloads/projects/aport-agent-guardrails/extensions/openclaw-aport/.npmignore`:
|
|
194
|
+
```
|
|
195
|
+
test.js
|
|
196
|
+
*.test.js
|
|
197
|
+
.DS_Store
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### 7. **Add GitHub Workflows (CI/CD)** ⭐⭐⭐⭐
|
|
203
|
+
**Impact:** High - Builds trust, catches bugs before merge
|
|
204
|
+
**Effort:** 20 minutes
|
|
205
|
+
**ROI:** High
|
|
206
|
+
|
|
207
|
+
**Current Status:** Only `ci.yml` and `release.yml` exist in `.github/workflows/`
|
|
208
|
+
|
|
209
|
+
**Action:** Verify existing workflows are complete and add missing ones:
|
|
210
|
+
|
|
211
|
+
**Check ci.yml includes:**
|
|
212
|
+
- Run `npm test` (main repo)
|
|
213
|
+
- Run `npm test` in `extensions/openclaw-aport/`
|
|
214
|
+
- Run bash tests: `make test`
|
|
215
|
+
- Verify submodules load: `git submodule update --init --recursive`
|
|
216
|
+
|
|
217
|
+
**Add publish-plugin.yml** for npm publish automation:
|
|
218
|
+
```yaml
|
|
219
|
+
name: Publish Plugin to npm
|
|
220
|
+
|
|
221
|
+
on:
|
|
222
|
+
release:
|
|
223
|
+
types: [published]
|
|
224
|
+
|
|
225
|
+
jobs:
|
|
226
|
+
publish:
|
|
227
|
+
runs-on: ubuntu-latest
|
|
228
|
+
steps:
|
|
229
|
+
- uses: actions/checkout@v4
|
|
230
|
+
- uses: actions/setup-node@v4
|
|
231
|
+
with:
|
|
232
|
+
node-version: '18'
|
|
233
|
+
registry-url: 'https://registry.npmjs.org'
|
|
234
|
+
- name: Publish OpenClaw Plugin
|
|
235
|
+
run: |
|
|
236
|
+
cd extensions/openclaw-aport
|
|
237
|
+
npm publish --access public
|
|
238
|
+
env:
|
|
239
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### 8. **Update CHANGELOG.md with 1.0.0 Release** ⭐⭐⭐⭐
|
|
245
|
+
**Impact:** High - Shows project maturity, helps users understand what changed
|
|
246
|
+
**Effort:** 10 minutes
|
|
247
|
+
**ROI:** High
|
|
248
|
+
|
|
249
|
+
**Current:** CHANGELOG.md at line 28 shows `[0.1.0] - 2026-02-14` as latest release
|
|
250
|
+
|
|
251
|
+
**Action:** Add `## [1.0.0] - 2026-02-XX` section with comprehensive release notes:
|
|
252
|
+
|
|
253
|
+
```markdown
|
|
254
|
+
## [1.0.0] - 2026-02-15
|
|
255
|
+
|
|
256
|
+
### 🎉 Major Release - Production Ready
|
|
257
|
+
|
|
258
|
+
#### Added - Core Features
|
|
259
|
+
- **OpenClaw Plugin**: Deterministic `before_tool_call` enforcement (545 lines, fully tested)
|
|
260
|
+
- Local mode (bash evaluator, no network required)
|
|
261
|
+
- API mode (APort cloud API integration)
|
|
262
|
+
- Fail-closed by default with configurable fail-open
|
|
263
|
+
- Per-tool-call verification (no caching/reuse)
|
|
264
|
+
- Recursive guardrail detection (delegates to inner tool)
|
|
265
|
+
- Tamper-evident decisions (SHA-256 content hashing)
|
|
266
|
+
|
|
267
|
+
#### Added - Security & Policies
|
|
268
|
+
- 40+ built-in security patterns (command injection, path traversal, etc.)
|
|
269
|
+
- 4 OpenClaw-compatible policies:
|
|
270
|
+
- `system.command.execute.v1` with allowed_commands allowlist
|
|
271
|
+
- `mcp.tool.execute.v1` for MCP tools
|
|
272
|
+
- `agent.session.create.v1` for agent spawning
|
|
273
|
+
- `agent.tool.register.v1` for dynamic tool registration
|
|
274
|
+
- Tool-to-policy mapping (exec, git.*, messaging.*, etc.)
|
|
275
|
+
- Kill switch support (global emergency stop)
|
|
276
|
+
|
|
277
|
+
#### Added - Documentation
|
|
278
|
+
- Comprehensive setup guide: `docs/QUICKSTART_OPENCLAW_PLUGIN.md`
|
|
279
|
+
- Plugin-specific README: `extensions/openclaw-aport/README.md` (420+ lines)
|
|
280
|
+
- Tool/policy mapping reference: `docs/TOOL_POLICY_MAPPING.md`
|
|
281
|
+
- OpenClaw compatibility guide: `docs/OPENCLAW_COMPATIBILITY.md`
|
|
282
|
+
- Verification methods: `docs/VERIFICATION_METHODS.md`
|
|
283
|
+
- Launch strategy and checklists in `docs/launch/`
|
|
284
|
+
|
|
285
|
+
#### Added - Developer Tools
|
|
286
|
+
- Interactive setup wizard: `bin/openclaw` (23KB, full UX)
|
|
287
|
+
- Passport creation wizard: `bin/aport-create-passport.sh` (OAP v1.0)
|
|
288
|
+
- Status dashboard: `bin/aport-status.sh` (health checks, recent activity)
|
|
289
|
+
- Dual evaluators: `aport-guardrail-bash.sh` (local) and `aport-guardrail-api.sh` (API)
|
|
290
|
+
|
|
291
|
+
#### Added - Testing & Quality
|
|
292
|
+
- 9 test suites, 100% passing:
|
|
293
|
+
- API evaluator tests
|
|
294
|
+
- Full flow tests
|
|
295
|
+
- Kill switch tests
|
|
296
|
+
- OAP v1 compliance tests
|
|
297
|
+
- Passport creation/validation tests
|
|
298
|
+
- Plugin CLI tests
|
|
299
|
+
- Plugin unit tests: `extensions/openclaw-aport/test.js` (integrity, canonicalization, mapping)
|
|
300
|
+
- Test fixtures with realistic passport examples
|
|
301
|
+
|
|
302
|
+
#### Added - GitHub Templates
|
|
303
|
+
- Issue templates (bug report, feature request, security)
|
|
304
|
+
- Pull request template
|
|
305
|
+
- CI/CD workflows (ci.yml, release.yml)
|
|
306
|
+
|
|
307
|
+
#### Changed
|
|
308
|
+
- Version bumped to 1.0.0 (production-ready)
|
|
309
|
+
- Plugin config: installer now sets `allowed_commands: ["*"]` by default (no manual editing)
|
|
310
|
+
- Improved exec handling: detects recursive guardrail invocations, delegates to inner tool
|
|
311
|
+
- Enhanced error messages: shows OAP codes, suggests fixes (e.g., add to allowed_commands)
|
|
312
|
+
|
|
313
|
+
#### Performance
|
|
314
|
+
- P95 latency: 268ms (local mode)
|
|
315
|
+
- Mean latency: 178ms
|
|
316
|
+
- Success rate: 100%
|
|
317
|
+
- Zero failures in test suite
|
|
318
|
+
|
|
319
|
+
#### Breaking Changes
|
|
320
|
+
None (initial 1.0.0 release)
|
|
321
|
+
|
|
322
|
+
### [0.1.0] - 2026-02-14
|
|
323
|
+
(Initial development release - see previous entry)
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 9. **Add .editorconfig** ⭐⭐⭐
|
|
329
|
+
**Impact:** Medium-High - Ensures consistent formatting across contributors
|
|
330
|
+
**Effort:** 3 minutes
|
|
331
|
+
**ROI:** High (prevents formatting PR noise)
|
|
332
|
+
|
|
333
|
+
**Action:** Create `.editorconfig`:
|
|
334
|
+
```ini
|
|
335
|
+
root = true
|
|
336
|
+
|
|
337
|
+
[*]
|
|
338
|
+
charset = utf-8
|
|
339
|
+
end_of_line = lf
|
|
340
|
+
insert_final_newline = true
|
|
341
|
+
trim_trailing_whitespace = true
|
|
342
|
+
|
|
343
|
+
[*.{js,json}]
|
|
344
|
+
indent_style = space
|
|
345
|
+
indent_size = 2
|
|
346
|
+
|
|
347
|
+
[*.{sh,bash}]
|
|
348
|
+
indent_style = space
|
|
349
|
+
indent_size = 2
|
|
350
|
+
|
|
351
|
+
[*.md]
|
|
352
|
+
trim_trailing_whitespace = false
|
|
353
|
+
max_line_length = off
|
|
354
|
+
|
|
355
|
+
[Makefile]
|
|
356
|
+
indent_style = tab
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## 🟡 MEDIUM PRIORITY (Quality of Life - Fix During Launch Week)
|
|
362
|
+
|
|
363
|
+
### 10. **Create Plugin npm README** ⭐⭐⭐
|
|
364
|
+
**Impact:** Medium - Better npm package page presentation
|
|
365
|
+
**Effort:** 5 minutes
|
|
366
|
+
**ROI:** Medium
|
|
367
|
+
|
|
368
|
+
**Why:** The plugin's README.md is comprehensive (420 lines) but could have a shorter npm-focused intro
|
|
369
|
+
|
|
370
|
+
**Action:** The existing `extensions/openclaw-aport/README.md` is already excellent. Just verify it renders well on npm:
|
|
371
|
+
1. Preview: https://www.npmjs.com/package/markdown-preview
|
|
372
|
+
2. Ensure badges at top (version, license, downloads)
|
|
373
|
+
|
|
374
|
+
**Optional:** Add badges to plugin README:
|
|
375
|
+
```markdown
|
|
376
|
+
[](https://www.npmjs.com/package/@aporthq/openclaw-aport)
|
|
377
|
+
[](LICENSE)
|
|
378
|
+
[](package.json)
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
### 11. **Add Examples to README.md** ⭐⭐⭐
|
|
384
|
+
**Impact:** Medium - Faster user onboarding
|
|
385
|
+
**Effort:** 10 minutes
|
|
386
|
+
**ROI:** Medium
|
|
387
|
+
|
|
388
|
+
**Current:** README.md has good structure but could use inline examples
|
|
389
|
+
|
|
390
|
+
**Action:** Add "Quick Example" section after "Quick Start" in README.md:
|
|
391
|
+
|
|
392
|
+
```markdown
|
|
393
|
+
## Quick Example
|
|
394
|
+
|
|
395
|
+
**Test policy enforcement locally:**
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# Allow a safe command
|
|
399
|
+
~/.openclaw/.skills/aport-guardrail.sh system.command.execute '{"command":"mkdir test"}'
|
|
400
|
+
# Exit: 0 (ALLOW)
|
|
401
|
+
|
|
402
|
+
# Block a dangerous pattern
|
|
403
|
+
~/.openclaw/.skills/aport-guardrail.sh system.command.execute '{"command":"rm -rf /"}'
|
|
404
|
+
# Exit: 1 (DENY - blocked pattern detected)
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Check your passport status:**
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
~/.openclaw/.skills/aport-status.sh
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Shows:
|
|
414
|
+
- ✅ Passport status and expiration
|
|
415
|
+
- 🔐 Active capabilities
|
|
416
|
+
- ⚙️ Configured limits
|
|
417
|
+
- 📊 Recent activity log
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
### 12. **Create UPGRADE.md Guide** ⭐⭐⭐
|
|
423
|
+
**Impact:** Medium - Helps users migrate between versions
|
|
424
|
+
**Effort:** 15 minutes
|
|
425
|
+
**ROI:** Medium (future-proofing)
|
|
426
|
+
|
|
427
|
+
**Why:** As you release 1.1.0, 2.0.0, users need migration guides
|
|
428
|
+
|
|
429
|
+
**Action:** Create `docs/UPGRADE.md`:
|
|
430
|
+
```markdown
|
|
431
|
+
# Upgrade Guide
|
|
432
|
+
|
|
433
|
+
## Upgrading from 0.1.0 to 1.0.0
|
|
434
|
+
|
|
435
|
+
### Breaking Changes
|
|
436
|
+
None - 1.0.0 is the first production release
|
|
437
|
+
|
|
438
|
+
### New Features
|
|
439
|
+
- OpenClaw plugin with `before_tool_call` enforcement
|
|
440
|
+
- API mode support (in addition to local mode)
|
|
441
|
+
- Enhanced exec handling with recursive guardrail detection
|
|
442
|
+
- Improved error messages with OAP codes
|
|
443
|
+
|
|
444
|
+
### Migration Steps
|
|
445
|
+
|
|
446
|
+
**If upgrading from 0.1.0:**
|
|
447
|
+
|
|
448
|
+
1. Update your installation:
|
|
449
|
+
```bash
|
|
450
|
+
git pull
|
|
451
|
+
git submodule update --init --recursive
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
2. Re-run setup to install plugin:
|
|
455
|
+
```bash
|
|
456
|
+
./bin/openclaw
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
3. Update OpenClaw config (if using plugin):
|
|
460
|
+
```yaml
|
|
461
|
+
plugins:
|
|
462
|
+
entries:
|
|
463
|
+
openclaw-aport:
|
|
464
|
+
enabled: true
|
|
465
|
+
config:
|
|
466
|
+
mode: local # or "api"
|
|
467
|
+
passportFile: ~/.openclaw/passport.json
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
4. Verify passport has `allowed_commands`:
|
|
471
|
+
```bash
|
|
472
|
+
jq '.limits.system.command.execute.allowed_commands' ~/.openclaw/passport.json
|
|
473
|
+
```
|
|
474
|
+
If empty or missing, re-run passport wizard or add manually.
|
|
475
|
+
|
|
476
|
+
**No other changes required.**
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
### 13. **Add FAQ Section to Main README** ⭐⭐⭐
|
|
482
|
+
**Impact:** Medium - Reduces support burden
|
|
483
|
+
**Effort:** 15 minutes
|
|
484
|
+
**ROI:** Medium-High
|
|
485
|
+
|
|
486
|
+
**Action:** Add FAQ section before "Resources" in README.md:
|
|
487
|
+
|
|
488
|
+
```markdown
|
|
489
|
+
## Frequently Asked Questions
|
|
490
|
+
|
|
491
|
+
### Does this slow down my agent?
|
|
492
|
+
|
|
493
|
+
No. Local mode adds ~180ms mean latency (268ms P95). Not noticeable in practice. Every call is fresh (no caching), so you always verify against current passport state.
|
|
494
|
+
|
|
495
|
+
### Can the agent bypass this?
|
|
496
|
+
|
|
497
|
+
**With plugin:** No. Platform enforces via `before_tool_call` hook. Agent never sees the guardrail—just gets allowed/denied.
|
|
498
|
+
|
|
499
|
+
**Without plugin (AGENTS.md only):** Yes, via prompt injection. Use the plugin for deterministic enforcement.
|
|
500
|
+
|
|
501
|
+
### What if I need to allow a new command?
|
|
502
|
+
|
|
503
|
+
Edit `~/.openclaw/passport.json`:
|
|
504
|
+
```json
|
|
505
|
+
"limits": {
|
|
506
|
+
"system.command.execute": {
|
|
507
|
+
"allowed_commands": ["mkdir", "npm", "YOUR_COMMAND"]
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
```
|
|
511
|
+
Next tool call uses the updated passport. Takes 30 seconds.
|
|
512
|
+
|
|
513
|
+
### Does this work with other frameworks (not OpenClaw)?
|
|
514
|
+
|
|
515
|
+
The plugin is OpenClaw-specific. The generic evaluator (`bin/aport-guardrail-bash.sh`, `bin/aport-guardrail-api.sh`) works anywhere (Node, Python, bash). See `docs/` for integration examples.
|
|
516
|
+
|
|
517
|
+
### What's the difference between local and API mode?
|
|
518
|
+
|
|
519
|
+
| Feature | Local Mode | API Mode |
|
|
520
|
+
|---------|------------|----------|
|
|
521
|
+
| Network Required | No | Yes |
|
|
522
|
+
| OAP Compliance | Subset (bash evaluator) | Full (JSON Schema, assurance levels) |
|
|
523
|
+
| Signatures | Unsigned | Ed25519 signed (API) |
|
|
524
|
+
| Kill Switch | Local file | Cloud-based (global) |
|
|
525
|
+
| Best For | Privacy, offline, dev | Production, audit, teams |
|
|
526
|
+
|
|
527
|
+
Both modes enforce the same policies. Local is faster; API has more features.
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
## 🟢 LOW PRIORITY (Nice to Have - Post-Launch)
|
|
533
|
+
|
|
534
|
+
### 14. **Add .prettierrc for Consistent Formatting** ⭐⭐
|
|
535
|
+
**Impact:** Low - Code formatting consistency
|
|
536
|
+
**Effort:** 3 minutes
|
|
537
|
+
**ROI:** Low (mostly for contributors)
|
|
538
|
+
|
|
539
|
+
**Action:** Create `.prettierrc`:
|
|
540
|
+
```json
|
|
541
|
+
{
|
|
542
|
+
"semi": true,
|
|
543
|
+
"singleQuote": false,
|
|
544
|
+
"tabWidth": 2,
|
|
545
|
+
"trailingComma": "all",
|
|
546
|
+
"printWidth": 80,
|
|
547
|
+
"arrowParens": "always"
|
|
548
|
+
}
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
And add to package.json:
|
|
552
|
+
```json
|
|
553
|
+
"devDependencies": {
|
|
554
|
+
"prettier": "^3.0.0"
|
|
555
|
+
},
|
|
556
|
+
"scripts": {
|
|
557
|
+
"format": "prettier --write \"**/*.{js,json,md}\"",
|
|
558
|
+
"format:check": "prettier --check \"**/*.{js,json,md}\""
|
|
559
|
+
}
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
### 15. **Create ROADMAP.md** ⭐⭐
|
|
565
|
+
**Impact:** Low-Medium - Shows project direction
|
|
566
|
+
**Effort:** 20 minutes
|
|
567
|
+
**ROI:** Low (but good for community engagement)
|
|
568
|
+
|
|
569
|
+
**Action:** Create public-facing `ROADMAP.md` (summary of internal plans):
|
|
570
|
+
|
|
571
|
+
```markdown
|
|
572
|
+
# Roadmap
|
|
573
|
+
|
|
574
|
+
## Released (1.0.0) ✅
|
|
575
|
+
- OpenClaw plugin with deterministic enforcement
|
|
576
|
+
- Local + API evaluation modes
|
|
577
|
+
- 4 OpenClaw policies (system.command.execute, mcp.tool.execute, etc.)
|
|
578
|
+
- 40+ security patterns
|
|
579
|
+
- Comprehensive documentation
|
|
580
|
+
|
|
581
|
+
## Near Term (Q1 2026)
|
|
582
|
+
- [ ] Audit log chaining (SHA-256, tamper-evident chain)
|
|
583
|
+
- [ ] Rate limiting enforcement (msgs_per_min, prs_per_day)
|
|
584
|
+
- [ ] Preset passport templates (developer, CI/CD, enterprise)
|
|
585
|
+
- [ ] npm publish for easy installation
|
|
586
|
+
- [ ] Video walkthrough (5-minute setup)
|
|
587
|
+
|
|
588
|
+
## Medium Term (Q2 2026)
|
|
589
|
+
- [ ] IronClaw adapter (bring policies to IronClaw)
|
|
590
|
+
- [ ] Web dashboard for passport management
|
|
591
|
+
- [ ] Team passports (share policies across team)
|
|
592
|
+
- [ ] Policy pack marketplace
|
|
593
|
+
- [ ] Homebrew formula (brew install aport-agent-guardrails)
|
|
594
|
+
|
|
595
|
+
## Long Term (Q3-Q4 2026)
|
|
596
|
+
- [ ] Go adapter
|
|
597
|
+
- [ ] Python adapter
|
|
598
|
+
- [ ] GitHub Action for CI/CD guardrails
|
|
599
|
+
- [ ] VS Code extension (inline policy hints)
|
|
600
|
+
- [ ] Policy testing framework
|
|
601
|
+
- [ ] OpenAPI-based policy generation
|
|
602
|
+
|
|
603
|
+
## Community Requests
|
|
604
|
+
Have an idea? [Open a discussion](https://github.com/aporthq/aport-agent-guardrails/discussions)
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
### 16. **Add Badges to Main README** ⭐⭐
|
|
610
|
+
**Impact:** Low - Visual trust indicators
|
|
611
|
+
**Effort:** 5 minutes
|
|
612
|
+
**ROI:** Low
|
|
613
|
+
|
|
614
|
+
**Action:** Add to top of README.md (after title):
|
|
615
|
+
|
|
616
|
+
```markdown
|
|
617
|
+
# APort Agent Guardrails
|
|
618
|
+
|
|
619
|
+
[](LICENSE)
|
|
620
|
+
[](package.json)
|
|
621
|
+
[](tests/)
|
|
622
|
+
[](package.json)
|
|
623
|
+
[](extensions/openclaw-aport/package.json)
|
|
624
|
+
|
|
625
|
+
**Deterministic pre-action authorization for AI agents.**
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
### 17. **Create Docker Image** ⭐⭐
|
|
631
|
+
**Impact:** Low-Medium - Easier deployment for some users
|
|
632
|
+
**Effort:** 30 minutes
|
|
633
|
+
**ROI:** Low (most users will git clone)
|
|
634
|
+
|
|
635
|
+
**Action:** Create `Dockerfile`:
|
|
636
|
+
```dockerfile
|
|
637
|
+
FROM node:18-alpine
|
|
638
|
+
|
|
639
|
+
RUN apk add --no-cache bash jq git
|
|
640
|
+
|
|
641
|
+
WORKDIR /app
|
|
642
|
+
|
|
643
|
+
COPY package*.json ./
|
|
644
|
+
RUN npm install --production
|
|
645
|
+
|
|
646
|
+
COPY . .
|
|
647
|
+
|
|
648
|
+
RUN git submodule update --init --recursive
|
|
649
|
+
|
|
650
|
+
EXPOSE 8787
|
|
651
|
+
|
|
652
|
+
CMD ["npm", "run", "server"]
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
And `docker-compose.yml`:
|
|
656
|
+
```yaml
|
|
657
|
+
version: '3.8'
|
|
658
|
+
services:
|
|
659
|
+
aport-agent-guardrails:
|
|
660
|
+
build: .
|
|
661
|
+
ports:
|
|
662
|
+
- "8787:8787"
|
|
663
|
+
volumes:
|
|
664
|
+
- ./config:/root/.openclaw:ro
|
|
665
|
+
- ./decisions:/app/decisions
|
|
666
|
+
environment:
|
|
667
|
+
- APORT_API_URL=https://api.aport.io
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
---
|
|
671
|
+
|
|
672
|
+
### 18. **Add Contributing Guidelines Detail** ⭐
|
|
673
|
+
**Impact:** Low - Better for contributors
|
|
674
|
+
**Effort:** 10 minutes
|
|
675
|
+
**ROI:** Low (existing CONTRIBUTING.md is good)
|
|
676
|
+
|
|
677
|
+
**Current:** CONTRIBUTING.md exists at 1779 bytes
|
|
678
|
+
|
|
679
|
+
**Action:** Enhance with:
|
|
680
|
+
- Development setup steps
|
|
681
|
+
- How to run tests locally
|
|
682
|
+
- Code style guidelines
|
|
683
|
+
- How to add a new policy
|
|
684
|
+
- How to test the plugin locally
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## 📊 Summary Matrix
|
|
689
|
+
|
|
690
|
+
| Priority | # Items | Est. Total Time | Total Impact |
|
|
691
|
+
|----------|---------|----------------|--------------|
|
|
692
|
+
| 🔴 Critical | 4 | 1.5 hours | Blocks Launch |
|
|
693
|
+
| 🟠 High | 5 | 1.5 hours | Strong Impact |
|
|
694
|
+
| 🟡 Medium | 4 | 1 hour | Quality of Life |
|
|
695
|
+
| 🟢 Low | 5 | 1.5 hours | Nice to Have |
|
|
696
|
+
| **TOTAL** | **18** | **~5.5 hours** | **Launch Ready** |
|
|
697
|
+
|
|
698
|
+
---
|
|
699
|
+
|
|
700
|
+
## 🎯 Recommended Implementation Order
|
|
701
|
+
|
|
702
|
+
### Pre-Launch (Must Do - Next 2 Hours)
|
|
703
|
+
1. ✅ Add SECURITY.md (15 min)
|
|
704
|
+
2. ✅ Fix version mismatch to 1.0.0 (2 min)
|
|
705
|
+
3. ✅ Verify repo is public (1 min)
|
|
706
|
+
4. ✅ Complete execution gate + capture screenshot (30-60 min)
|
|
707
|
+
5. ✅ Add CODE_OF_CONDUCT.md (10 min)
|
|
708
|
+
6. ✅ Add .npmignore (5 min)
|
|
709
|
+
|
|
710
|
+
**After these 6 items: Ready to launch guardrail post** ✅
|
|
711
|
+
|
|
712
|
+
### Launch Week (Should Do - Next 2 Hours)
|
|
713
|
+
7. Update CHANGELOG.md for 1.0.0 (10 min)
|
|
714
|
+
8. Verify/enhance CI workflows (20 min)
|
|
715
|
+
9. Add .editorconfig (3 min)
|
|
716
|
+
10. Add Quick Example to README (10 min)
|
|
717
|
+
|
|
718
|
+
### Post-Launch (Nice to Have - Ongoing)
|
|
719
|
+
11-18. Everything else as time permits
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
## 🚀 Launch Readiness Score
|
|
724
|
+
|
|
725
|
+
**Current: 82/100**
|
|
726
|
+
|
|
727
|
+
After completing Critical + High priority items: **95/100** (Launch Ready)
|
|
728
|
+
|
|
729
|
+
After completing all Medium priority items: **98/100** (Polished)
|
|
730
|
+
|
|
731
|
+
After completing all items: **100/100** (Perfect)
|
|
732
|
+
|
|
733
|
+
---
|
|
734
|
+
|
|
735
|
+
## 📝 Quick Wins (< 15 min each)
|
|
736
|
+
|
|
737
|
+
If short on time, prioritize these for maximum impact:
|
|
738
|
+
|
|
739
|
+
1. **SECURITY.md** (15 min) - Critical missing file
|
|
740
|
+
2. **Version sync** (2 min) - Prevents confusion
|
|
741
|
+
3. **Execution gate screenshot** (30 min if setup works) - Required for launch post
|
|
742
|
+
4. **.npmignore** (5 min) - Prevents npm bloat
|
|
743
|
+
5. **.editorconfig** (3 min) - Clean contributor experience
|
|
744
|
+
6. **Badges to README** (5 min) - Visual polish
|
|
745
|
+
|
|
746
|
+
**Total: ~1 hour for massive polish improvement**
|
|
747
|
+
|
|
748
|
+
---
|
|
749
|
+
|
|
750
|
+
## Notes
|
|
751
|
+
|
|
752
|
+
- All tests passing (9/9) ✅
|
|
753
|
+
- Plugin tests passing (canonicalize, integrity, mapping) ✅
|
|
754
|
+
- Documentation is comprehensive and well-written ✅
|
|
755
|
+
- Code quality is high (545-line plugin with good structure) ✅
|
|
756
|
+
- No TODOs/FIXMEs found in codebase ✅
|
|
757
|
+
|
|
758
|
+
**Main gaps:** Standard repository files (SECURITY.md, CODE_OF_CONDUCT.md, .npmignore) and version consistency.
|
|
759
|
+
|
|
760
|
+
**Recommendation:** Focus on Critical items first (4 items, ~1.5 hours), then launch. High priority items can be done during launch week based on early feedback.
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
**Last Updated:** 2026-02-15
|
|
765
|
+
**Reviewer:** Claude Code Comprehensive Audit
|
|
766
|
+
**Next Review:** After implementing Critical fixes
|