@pinta-ai/pinta-cc 1.3.1 → 1.4.0
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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +9 -0
- package/README.md +4 -4
- package/dist/core/guard.js +6 -1
- package/dist/core/guard.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pinta-ai",
|
|
3
3
|
"owner": {
|
|
4
|
-
"name": "
|
|
4
|
+
"name": "pinta-ai",
|
|
5
5
|
"email": "dev@pinta.sh"
|
|
6
6
|
},
|
|
7
7
|
"plugins": [
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"name": "pinta-cc",
|
|
10
10
|
"source": {
|
|
11
11
|
"source": "url",
|
|
12
|
-
"url": "https://github.com/
|
|
12
|
+
"url": "https://github.com/pinta-ai/pinta-cc.git"
|
|
13
13
|
},
|
|
14
14
|
"description": "Claude Code security monitoring plugin — emits OTLP spans for hook events and fail-closes on missing Pinta identity.",
|
|
15
15
|
"homepage": "https://pinta.sh",
|
|
16
|
-
"repository": "https://github.com/
|
|
16
|
+
"repository": "https://github.com/pinta-ai/pinta-cc",
|
|
17
17
|
"category": "security"
|
|
18
18
|
}
|
|
19
19
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pinta-cc",
|
|
3
3
|
"description": "Generic OTLP forwarder for Claude Code hook events. Converts hook events into OTLP/HTTP spans and sends them to any OpenTelemetry-compatible collector.",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.2",
|
|
5
5
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
6
6
|
"userConfig": {
|
|
7
7
|
"endpoint": {
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to pinta-cc are documented here.
|
|
4
4
|
|
|
5
|
+
## [1.3.2] - 2026-06-12
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Guard request timeout raised from `50ms` to `10s` in `src/core/guard.ts`. The
|
|
10
|
+
previous 50ms window caused PreToolUse guard requests to fail open (`ALLOW`)
|
|
11
|
+
before the manager's `/guard/evaluate` could respond. The endpoint now has
|
|
12
|
+
time to actually evaluate. Fail-open behavior on timeout is unchanged.
|
|
13
|
+
|
|
5
14
|
## [1.3.1] - 2026-05-31
|
|
6
15
|
|
|
7
16
|
### Added
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Converts Claude Code hook events into OTLP/HTTP spans and forwards them to any O
|
|
|
16
16
|
| Channel | Install path | Auto-update |
|
|
17
17
|
|---------|-------------|-------------|
|
|
18
18
|
| **Pinta Manager v0.2+** | Manager installs and configures automatically | Yes — on manager reconcile |
|
|
19
|
-
| **Marketplace `pinta-cc@pinta-ai`** | `/plugin marketplace add
|
|
19
|
+
| **Marketplace `pinta-cc@pinta-ai`** | `/plugin marketplace add pinta-ai/pinta-cc` then `/plugin install pinta-cc@pinta-ai` | Yes — on Claude Code startup |
|
|
20
20
|
|
|
21
21
|
## Installation
|
|
22
22
|
|
|
@@ -27,7 +27,7 @@ Pinta Manager v0.2+ handles installation and configuration automatically. No man
|
|
|
27
27
|
### Marketplace
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
/plugin marketplace add
|
|
30
|
+
/plugin marketplace add pinta-ai/pinta-cc
|
|
31
31
|
/plugin install pinta-cc@pinta-ai
|
|
32
32
|
```
|
|
33
33
|
|
|
@@ -36,13 +36,13 @@ After installation, Claude Code automatically pulls new versions from the market
|
|
|
36
36
|
### Direct from GitHub
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
claude plugin install github:
|
|
39
|
+
claude plugin install github:pinta-ai/pinta-cc
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
### Local development
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
git clone https://github.com/
|
|
45
|
+
git clone https://github.com/pinta-ai/pinta-cc.git
|
|
46
46
|
cd pinta-cc
|
|
47
47
|
npm install && npm run build
|
|
48
48
|
claude --plugin-dir .
|
package/dist/core/guard.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.evaluateGuard = evaluateGuard;
|
|
4
|
-
const TIMEOUT_MS =
|
|
4
|
+
const TIMEOUT_MS = 10_000;
|
|
5
|
+
// Self-identify to the manager's guard route so it can attribute calls to this
|
|
6
|
+
// adaptor (the route parses `pinta-*/<version>` out of the User-Agent). Keep the
|
|
7
|
+
// version in sync with package.json.
|
|
8
|
+
const GUARD_UA = 'pinta-cc/1.4.0';
|
|
5
9
|
function sleep(ms) {
|
|
6
10
|
return new Promise((_, reject) => setTimeout(() => {
|
|
7
11
|
const err = new Error('Guard request timed out');
|
|
@@ -21,6 +25,7 @@ async function evaluateGuard(input, endpoint) {
|
|
|
21
25
|
method: 'POST',
|
|
22
26
|
headers: {
|
|
23
27
|
'content-type': 'application/json',
|
|
28
|
+
'user-agent': GUARD_UA,
|
|
24
29
|
'x-pinta-relay-token': process.env.PINTA_RELAY_TOKEN ?? '',
|
|
25
30
|
},
|
|
26
31
|
body: JSON.stringify({ input }),
|
package/dist/core/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/core/guard.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/core/guard.ts"],"names":[],"mappings":";;AAmCA,sCAuCC;AAxDD,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,+EAA+E;AAC/E,iFAAiF;AACjF,qCAAqC;AACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAElC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,QAA4B;IAE5B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC7B,KAAK,CAAC,QAAQ,EAAE;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,YAAY,EAAE,QAAQ;oBACtB,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;iBAC3D;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;aAChC,CAAC;YACF,KAAK,CAAC,UAAU,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACzH,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAK7B,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAmC,GAAa,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3G,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IACxH,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pinta-ai/pinta-cc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Generic OTLP forwarder for Claude Code hook events",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
],
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "https://github.com/
|
|
17
|
+
"url": "https://github.com/pinta-ai/pinta-cc.git"
|
|
18
18
|
},
|
|
19
|
-
"homepage": "https://github.com/
|
|
19
|
+
"homepage": "https://github.com/pinta-ai/pinta-cc#readme",
|
|
20
20
|
"bugs": {
|
|
21
|
-
"url": "https://github.com/
|
|
21
|
+
"url": "https://github.com/pinta-ai/pinta-cc/issues"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"build": "tsc",
|