narai-primitives 2.0.0 → 2.1.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/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/policy_validation.d.ts +68 -0
- package/dist/config/policy_validation.d.ts.map +1 -0
- package/dist/config/policy_validation.js +58 -0
- package/dist/config/policy_validation.js.map +1 -0
- package/dist/config/types.d.ts +37 -19
- package/dist/config/types.d.ts.map +1 -1
- package/dist/connectors/aws/lib/aws_client.js +1 -1
- package/dist/connectors/aws/lib/aws_client.js.map +1 -1
- package/dist/connectors/confluence/index.js +1 -1
- package/dist/connectors/confluence/index.js.map +1 -1
- package/dist/connectors/confluence/lib/confluence_client.js +1 -1
- package/dist/connectors/confluence/lib/confluence_client.js.map +1 -1
- package/dist/connectors/db/connector.d.ts.map +1 -1
- package/dist/connectors/db/connector.js +4 -0
- package/dist/connectors/db/connector.js.map +1 -1
- package/dist/connectors/db/index.d.ts +1 -1
- package/dist/connectors/db/index.d.ts.map +1 -1
- package/dist/connectors/db/index.js +1 -1
- package/dist/connectors/db/index.js.map +1 -1
- package/dist/connectors/db/lib/connection.js +1 -1
- package/dist/connectors/db/lib/connection.js.map +1 -1
- package/dist/connectors/db/lib/credentials.d.ts +1 -1
- package/dist/connectors/db/lib/credentials.js +4 -4
- package/dist/connectors/db/lib/credentials.js.map +1 -1
- package/dist/connectors/db/lib/plugin_config.d.ts +28 -1
- package/dist/connectors/db/lib/plugin_config.d.ts.map +1 -1
- package/dist/connectors/db/lib/plugin_config.js +7 -1
- package/dist/connectors/db/lib/plugin_config.js.map +1 -1
- package/dist/connectors/db/lib/policy.d.ts +10 -2
- package/dist/connectors/db/lib/policy.d.ts.map +1 -1
- package/dist/connectors/db/lib/policy.js.map +1 -1
- package/dist/connectors/github/index.js +1 -1
- package/dist/connectors/github/index.js.map +1 -1
- package/dist/connectors/github/lib/github_client.js +1 -1
- package/dist/connectors/github/lib/github_client.js.map +1 -1
- package/dist/connectors/jira/index.js +1 -1
- package/dist/connectors/jira/index.js.map +1 -1
- package/dist/connectors/jira/lib/jira_client.js +1 -1
- package/dist/connectors/jira/lib/jira_client.js.map +1 -1
- package/dist/connectors/notion/index.js +1 -1
- package/dist/connectors/notion/index.js.map +1 -1
- package/dist/connectors/notion/lib/notion_client.js +1 -1
- package/dist/connectors/notion/lib/notion_client.js.map +1 -1
- package/dist/credentials/cloud_secrets.d.ts +57 -0
- package/dist/credentials/cloud_secrets.d.ts.map +1 -0
- package/dist/credentials/cloud_secrets.js +202 -0
- package/dist/credentials/cloud_secrets.js.map +1 -0
- package/dist/credentials/env_var.d.ts +24 -0
- package/dist/credentials/env_var.d.ts.map +1 -0
- package/dist/credentials/env_var.js +30 -0
- package/dist/credentials/env_var.js.map +1 -0
- package/dist/credentials/file.d.ts +73 -0
- package/dist/credentials/file.d.ts.map +1 -0
- package/dist/credentials/file.js +159 -0
- package/dist/credentials/file.js.map +1 -0
- package/dist/credentials/index.d.ts +114 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +174 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/keychain.d.ts +31 -0
- package/dist/credentials/keychain.d.ts.map +1 -0
- package/dist/credentials/keychain.js +124 -0
- package/dist/credentials/keychain.js.map +1 -0
- package/dist/credentials/parse_ref.d.ts +57 -0
- package/dist/credentials/parse_ref.d.ts.map +1 -0
- package/dist/credentials/parse_ref.js +128 -0
- package/dist/credentials/parse_ref.js.map +1 -0
- package/dist/credentials/redact.d.ts +30 -0
- package/dist/credentials/redact.d.ts.map +1 -0
- package/dist/credentials/redact.js +51 -0
- package/dist/credentials/redact.js.map +1 -0
- package/dist/toolkit/connector.d.ts +11 -0
- package/dist/toolkit/connector.d.ts.map +1 -1
- package/dist/toolkit/connector.js.map +1 -1
- package/dist/toolkit/index.d.ts +1 -1
- package/dist/toolkit/index.js +1 -1
- package/dist/toolkit/policy/config.d.ts.map +1 -1
- package/dist/toolkit/policy/config.js +1 -2
- package/dist/toolkit/policy/config.js.map +1 -1
- package/dist/toolkit/policy/gate.d.ts +7 -5
- package/dist/toolkit/policy/gate.d.ts.map +1 -1
- package/dist/toolkit/policy/gate.js +2 -14
- package/dist/toolkit/policy/gate.js.map +1 -1
- package/dist/toolkit/policy/types.d.ts +30 -8
- package/dist/toolkit/policy/types.d.ts.map +1 -1
- package/dist/toolkit/policy/types.js +8 -2
- package/dist/toolkit/policy/types.js.map +1 -1
- package/package.json +21 -3
- package/plugins/aws-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/aws-agent/README.md +2 -2
- package/plugins/aws-agent/bin/aws-agent +2 -2
- package/plugins/aws-agent/hooks/hooks.json +5 -5
- package/plugins/aws-agent/hooks/reminder.mjs +1 -1
- package/plugins/aws-agent/package.json +1 -1
- package/plugins/aws-agent/skills/aws-agent/SKILL.md +1 -1
- package/plugins/confluence-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/confluence-agent/README.md +1 -1
- package/plugins/confluence-agent/bin/confluence-agent +1 -1
- package/plugins/confluence-agent/hooks/hooks.json +5 -5
- package/plugins/confluence-agent/hooks/reminder.mjs +1 -1
- package/plugins/confluence-agent/package.json +1 -1
- package/plugins/confluence-agent/skills/confluence-agent/SKILL.md +1 -1
- package/plugins/db-agent/.claude-plugin/plugin.json +4 -4
- package/plugins/db-agent/README.md +2 -2
- package/plugins/db-agent/bin/db-agent +1 -1
- package/plugins/db-agent/hooks/hooks.json +6 -6
- package/plugins/db-agent/hooks/reminder.mjs +1 -1
- package/plugins/db-agent/package.json +1 -1
- package/plugins/db-agent/skills/db-agent/SKILL.md +1 -1
- package/plugins/gcp-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/gcp-agent/README.md +2 -2
- package/plugins/gcp-agent/bin/gcp-agent +2 -2
- package/plugins/gcp-agent/hooks/hooks.json +5 -5
- package/plugins/gcp-agent/hooks/reminder.mjs +1 -1
- package/plugins/gcp-agent/package.json +1 -1
- package/plugins/gcp-agent/skills/gcp-agent/SKILL.md +1 -1
- package/plugins/github-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/github-agent/README.md +1 -1
- package/plugins/github-agent/bin/github-agent +1 -1
- package/plugins/github-agent/hooks/hooks.json +5 -5
- package/plugins/github-agent/hooks/reminder.mjs +1 -1
- package/plugins/github-agent/package.json +1 -1
- package/plugins/github-agent/skills/github-agent/SKILL.md +1 -1
- package/plugins/jira-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/jira-agent/README.md +1 -1
- package/plugins/jira-agent/bin/jira-agent +1 -1
- package/plugins/jira-agent/hooks/hooks.json +5 -5
- package/plugins/jira-agent/hooks/reminder.mjs +1 -1
- package/plugins/jira-agent/package.json +1 -1
- package/plugins/jira-agent/skills/jira-agent/SKILL.md +1 -1
- package/plugins/notion-agent/.claude-plugin/plugin.json +2 -2
- package/plugins/notion-agent/README.md +2 -2
- package/plugins/notion-agent/bin/notion-agent +1 -1
- package/plugins/notion-agent/hooks/hooks.json +5 -5
- package/plugins/notion-agent/hooks/reminder.mjs +1 -1
- package/plugins/notion-agent/package.json +1 -1
- package/plugins/notion-agent/skills/notion-agent/SKILL.md +1 -1
|
@@ -18,19 +18,41 @@ export interface Classification {
|
|
|
18
18
|
kind: Kind;
|
|
19
19
|
aspects?: readonly string[];
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Wire rules operators set per classification. The toolkit-level base set
|
|
23
|
+
* holds only `success | escalate | denied`. Connectors that need a custom
|
|
24
|
+
* rule (e.g. db-agent's `"present"` rule, which means "displayed but not
|
|
25
|
+
* executed") declare it locally and translate to a base rule at their own
|
|
26
|
+
* boundary before invoking `checkPolicy`. The wire envelope (`status` is
|
|
27
|
+
* `string`) and the `extendDecision` hook still let those connectors emit
|
|
28
|
+
* connector-specific outcomes.
|
|
29
|
+
*/
|
|
30
|
+
export type Rule = "success" | "escalate" | "denied";
|
|
23
31
|
/** Rule without `"success"` — used for safety-floor slots (admin, ddl, privilege). */
|
|
24
32
|
export type RestrictedRule = Exclude<Rule, "success">;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
/**
|
|
34
|
+
* The toolkit-level rules shape, keyed by classification kind. `TExtra`
|
|
35
|
+
* mirrors `PolicyMap`'s parameter, but the default is `never` (not `string`):
|
|
36
|
+
* the toolkit gate is the strict checkpoint, so unspecialized `PolicyRules`
|
|
37
|
+
* means "base rules only". Connectors with extra rule values declare them
|
|
38
|
+
* explicitly via `PolicyRules<"present">` etc., and translate to base
|
|
39
|
+
* before invoking `checkPolicy`.
|
|
40
|
+
*/
|
|
41
|
+
export interface PolicyRules<TExtra extends string = never> {
|
|
42
|
+
read: Rule | TExtra;
|
|
43
|
+
write: Rule | TExtra;
|
|
44
|
+
admin: RestrictedRule | TExtra;
|
|
29
45
|
/** Per-aspect rule map. Absent aspects fall through to the kind's rule. */
|
|
30
|
-
aspects?: Record<string, Rule>;
|
|
46
|
+
aspects?: Record<string, Rule | TExtra>;
|
|
31
47
|
}
|
|
32
48
|
export type ApprovalMode = "auto" | "confirm_once" | "confirm_each" | "grant_required";
|
|
33
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Connector-agnostic default rules. Writes escalate by default (operators
|
|
51
|
+
* may downgrade to `success` per connector); admin is the safety-floor
|
|
52
|
+
* default-deny. Connectors that historically used `"present"` for write
|
|
53
|
+
* (e.g. db-agent's "displayed but not executed") declare it in their own
|
|
54
|
+
* defaults and translate to `"escalate"` before reaching the toolkit gate.
|
|
55
|
+
*/
|
|
34
56
|
export declare const DEFAULT_POLICY: PolicyRules;
|
|
35
57
|
/**
|
|
36
58
|
* A gate decision. `extendDecision` hooks (e.g., db-agent's `present_only`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/toolkit/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAMD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/toolkit/policy/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,16 @@
|
|
|
6
6
|
* | error`; connectors MAY extend with custom status values via the
|
|
7
7
|
* `extendDecision` hook on `createConnector` (db-agent uses `present_only`).
|
|
8
8
|
*/
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Connector-agnostic default rules. Writes escalate by default (operators
|
|
11
|
+
* may downgrade to `success` per connector); admin is the safety-floor
|
|
12
|
+
* default-deny. Connectors that historically used `"present"` for write
|
|
13
|
+
* (e.g. db-agent's "displayed but not executed") declare it in their own
|
|
14
|
+
* defaults and translate to `"escalate"` before reaching the toolkit gate.
|
|
15
|
+
*/
|
|
10
16
|
export const DEFAULT_POLICY = {
|
|
11
17
|
read: "success",
|
|
12
|
-
write: "
|
|
18
|
+
write: "escalate",
|
|
13
19
|
admin: "denied",
|
|
14
20
|
aspects: {},
|
|
15
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/toolkit/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/toolkit/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4DH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,EAAE;CACZ,CAAC;AAgBF,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAuC;IAC/D,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACV,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "narai-primitives",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Read-only connectors + planning hub + connector framework, in one package. Bundles what was @narai/connector-toolkit, @narai/connector-config, @narai/connector-hub,
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Read-only connectors + planning hub + connector framework + credential resolution, in one package. Bundles what was @narai/connector-toolkit, @narai/connector-config, @narai/connector-hub, the seven @narai/<svc>-agent-connector packages, and @narai/credential-providers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/hub/index.js",
|
|
7
7
|
"types": "./dist/hub/index.d.ts",
|
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
"types": "./dist/config/index.d.ts",
|
|
23
23
|
"import": "./dist/config/index.js"
|
|
24
24
|
},
|
|
25
|
+
"./credentials": {
|
|
26
|
+
"types": "./dist/credentials/index.d.ts",
|
|
27
|
+
"import": "./dist/credentials/index.js"
|
|
28
|
+
},
|
|
25
29
|
"./aws": {
|
|
26
30
|
"types": "./dist/connectors/aws/index.d.ts",
|
|
27
31
|
"import": "./dist/connectors/aws/index.js"
|
|
@@ -34,6 +38,18 @@
|
|
|
34
38
|
"types": "./dist/connectors/db/index.d.ts",
|
|
35
39
|
"import": "./dist/connectors/db/index.js"
|
|
36
40
|
},
|
|
41
|
+
"./db/policy": {
|
|
42
|
+
"types": "./dist/connectors/db/lib/policy.d.ts",
|
|
43
|
+
"import": "./dist/connectors/db/lib/policy.js"
|
|
44
|
+
},
|
|
45
|
+
"./db/schema": {
|
|
46
|
+
"types": "./dist/connectors/db/lib/schema.d.ts",
|
|
47
|
+
"import": "./dist/connectors/db/lib/schema.js"
|
|
48
|
+
},
|
|
49
|
+
"./db/plugin-config": {
|
|
50
|
+
"types": "./dist/connectors/db/lib/plugin_config.d.ts",
|
|
51
|
+
"import": "./dist/connectors/db/lib/plugin_config.js"
|
|
52
|
+
},
|
|
37
53
|
"./gcp": {
|
|
38
54
|
"types": "./dist/connectors/gcp/index.d.ts",
|
|
39
55
|
"import": "./dist/connectors/gcp/index.js"
|
|
@@ -92,7 +108,6 @@
|
|
|
92
108
|
},
|
|
93
109
|
"dependencies": {
|
|
94
110
|
"@anthropic-ai/claude-agent-sdk": "^0.2.119",
|
|
95
|
-
"@narai/credential-providers": "^0.2.1",
|
|
96
111
|
"better-sqlite3": "^12.9.0",
|
|
97
112
|
"js-yaml": "^4.1.1",
|
|
98
113
|
"zod": "^3.23.0"
|
|
@@ -103,7 +118,10 @@
|
|
|
103
118
|
"@aws-sdk/client-lambda": "^3.1030.0",
|
|
104
119
|
"@aws-sdk/client-rds": "^3.1030.0",
|
|
105
120
|
"@aws-sdk/client-s3": "^3.1030.0",
|
|
121
|
+
"@aws-sdk/client-secrets-manager": "^3.1030.0",
|
|
106
122
|
"@aws-sdk/client-sts": "^3.1030.0",
|
|
123
|
+
"@azure/keyvault-secrets": "^4.10.0",
|
|
124
|
+
"@google-cloud/secret-manager": "^6.0.0",
|
|
107
125
|
"gpt-tokenizer": "^2.5.0",
|
|
108
126
|
"mongodb": "^7.1.1",
|
|
109
127
|
"mssql": "^12.2.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aws-agent-plugin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Read-only AWS connector for Claude Code.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Read-only AWS connector for Claude Code. Built on narai-primitives (subpath ./aws). Lambda, RDS, S3, CloudWatch.",
|
|
5
5
|
"author": "narai"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# aws-agent-plugin
|
|
2
2
|
|
|
3
|
-
Claude Code plugin that wraps [
|
|
3
|
+
Claude Code plugin that wraps [`narai-primitives/aws`](https://www.npmjs.com/package/narai-primitives) as a read-only AWS skill and slash command.
|
|
4
4
|
|
|
5
5
|
## What it adds
|
|
6
6
|
|
|
@@ -21,7 +21,7 @@ hook in `hooks/hooks.json`:
|
|
|
21
21
|
next session.
|
|
22
22
|
|
|
23
23
|
After a successful install,
|
|
24
|
-
`${CLAUDE_PLUGIN_DATA}/node_modules
|
|
24
|
+
`${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/aws/cli.js`
|
|
25
25
|
exists and `bin/aws-agent` can exec it.
|
|
26
26
|
|
|
27
27
|
## Usage
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# aws-agent — thin shim over
|
|
2
|
+
# aws-agent — thin shim over narai-primitives (CLI at dist/connectors/aws).
|
|
3
3
|
#
|
|
4
4
|
# The SessionStart hook in hooks/hooks.json installs the npm package into
|
|
5
5
|
# ${CLAUDE_PLUGIN_DATA}/node_modules on first session. This shim exec's
|
|
@@ -11,7 +11,7 @@ if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
|
11
11
|
exit 2
|
|
12
12
|
fi
|
|
13
13
|
|
|
14
|
-
CLI="${CLAUDE_PLUGIN_DATA}/node_modules
|
|
14
|
+
CLI="${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/aws/cli.js"
|
|
15
15
|
|
|
16
16
|
if [ ! -f "$CLI" ]; then
|
|
17
17
|
echo "aws-agent: connector CLI not found at $CLI" >&2
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"type": "command",
|
|
12
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/
|
|
12
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/reminder.mjs\" 2>/dev/null || true"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"type": "command",
|
|
16
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
16
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/stale-summarize.mjs\" 2>/dev/null || true",
|
|
17
17
|
"env": { "USAGE_CONNECTOR_NAME": "aws" }
|
|
18
18
|
}
|
|
19
19
|
]
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"hooks": [
|
|
26
26
|
{
|
|
27
27
|
"type": "command",
|
|
28
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
28
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/usage-record.mjs\" 2>/dev/null || true",
|
|
29
29
|
"env": {
|
|
30
30
|
"USAGE_CONNECTOR_NAME": "aws",
|
|
31
|
-
"USAGE_BIN_HINT": "
|
|
31
|
+
"USAGE_BIN_HINT": "narai-primitives/dist/connectors/aws"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
]
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"hooks": [
|
|
40
40
|
{
|
|
41
41
|
"type": "command",
|
|
42
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
42
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/session-summary.mjs\" 2>/dev/null || true",
|
|
43
43
|
"env": { "USAGE_CONNECTOR_NAME": "aws" }
|
|
44
44
|
}
|
|
45
45
|
]
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
try {
|
|
6
6
|
const data = process.env.CLAUDE_PLUGIN_DATA;
|
|
7
7
|
if (!data) process.exit(0);
|
|
8
|
-
const toolkitEntry = `${data}/node_modules
|
|
8
|
+
const toolkitEntry = `${data}/node_modules/narai-primitives/dist/toolkit/plugin/reminder.js`;
|
|
9
9
|
const mod = await import(toolkitEntry);
|
|
10
10
|
const decision = mod.evaluateNudge({ connectors: ["aws"] });
|
|
11
11
|
if (decision.nudge) {
|
|
@@ -11,7 +11,7 @@ context: fork
|
|
|
11
11
|
# AWS Agent
|
|
12
12
|
|
|
13
13
|
Answer the user's question by invoking the `aws-agent` binary exposed by
|
|
14
|
-
this plugin. It delegates to
|
|
14
|
+
this plugin. It delegates to `narai-primitives/aws`, which speaks to
|
|
15
15
|
AWS via the read-only SDK v3 surface.
|
|
16
16
|
|
|
17
17
|
## Invocation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "confluence-agent-plugin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Read-only Confluence connector for Claude Code.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Read-only Confluence connector for Claude Code. Built on narai-primitives (subpath ./confluence).",
|
|
5
5
|
"author": "narai"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# confluence-agent-plugin
|
|
2
2
|
|
|
3
|
-
Claude Code plugin that wraps
|
|
3
|
+
Claude Code plugin that wraps `narai-primitives/confluence` as a read-only Confluence skill and slash command. Same layout as aws/gcp/notion-agent-plugin.
|
|
4
4
|
|
|
5
5
|
## Credentials
|
|
6
6
|
|
|
@@ -6,7 +6,7 @@ if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
|
6
6
|
exit 2
|
|
7
7
|
fi
|
|
8
8
|
|
|
9
|
-
CLI="${CLAUDE_PLUGIN_DATA}/node_modules
|
|
9
|
+
CLI="${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/confluence/cli.js"
|
|
10
10
|
|
|
11
11
|
if [ ! -f "$CLI" ]; then
|
|
12
12
|
echo "confluence-agent: connector CLI not found at $CLI" >&2
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"type": "command",
|
|
12
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/
|
|
12
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/reminder.mjs\" 2>/dev/null || true"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"type": "command",
|
|
16
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
16
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/stale-summarize.mjs\" 2>/dev/null || true",
|
|
17
17
|
"env": { "USAGE_CONNECTOR_NAME": "confluence" }
|
|
18
18
|
}
|
|
19
19
|
]
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"hooks": [
|
|
26
26
|
{
|
|
27
27
|
"type": "command",
|
|
28
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
28
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/usage-record.mjs\" 2>/dev/null || true",
|
|
29
29
|
"env": {
|
|
30
30
|
"USAGE_CONNECTOR_NAME": "confluence",
|
|
31
|
-
"USAGE_BIN_HINT": "
|
|
31
|
+
"USAGE_BIN_HINT": "narai-primitives/dist/connectors/confluence"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
]
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"hooks": [
|
|
40
40
|
{
|
|
41
41
|
"type": "command",
|
|
42
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
42
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/session-summary.mjs\" 2>/dev/null || true",
|
|
43
43
|
"env": { "USAGE_CONNECTOR_NAME": "confluence" }
|
|
44
44
|
}
|
|
45
45
|
]
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
try {
|
|
15
15
|
const data = process.env.CLAUDE_PLUGIN_DATA;
|
|
16
16
|
if (!data) process.exit(0);
|
|
17
|
-
const toolkitEntry = `${data}/node_modules
|
|
17
|
+
const toolkitEntry = `${data}/node_modules/narai-primitives/dist/toolkit/plugin/reminder.js`;
|
|
18
18
|
const mod = await import(toolkitEntry);
|
|
19
19
|
const decision = mod.evaluateNudge({ connectors: ["confluence"] });
|
|
20
20
|
if (decision.nudge) {
|
|
@@ -11,7 +11,7 @@ context: fork
|
|
|
11
11
|
|
|
12
12
|
Answer the user's question by invoking the `confluence-agent` binary
|
|
13
13
|
exposed by this plugin. It delegates to
|
|
14
|
-
|
|
14
|
+
`narai-primitives/confluence` via Atlassian's Confluence REST v1.
|
|
15
15
|
|
|
16
16
|
## Invocation
|
|
17
17
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "db-agent-plugin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Safe, read-only database query agent for Claude Code.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Safe, read-only database query agent for Claude Code. Built on narai-primitives (subpath ./db). Every statement passes the policy gate before any driver loads or any connection is opened.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Narai Labs",
|
|
7
7
|
"url": "https://github.com/narailabs"
|
|
8
8
|
},
|
|
9
|
-
"homepage": "https://github.com/narailabs/db-agent
|
|
10
|
-
"repository": "https://github.com/narailabs/
|
|
9
|
+
"homepage": "https://github.com/narailabs/narai-primitives/tree/main/plugins/db-agent",
|
|
10
|
+
"repository": "https://github.com/narailabs/narai-primitives",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"keywords": ["database", "sql", "postgresql", "mysql", "sqlite", "policy-gate"],
|
|
13
13
|
"userConfig": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# db-agent-plugin
|
|
2
2
|
|
|
3
|
-
Claude Code plugin that wraps [
|
|
3
|
+
Claude Code plugin that wraps [`narai-primitives/db`](https://www.npmjs.com/package/narai-primitives).
|
|
4
4
|
|
|
5
5
|
Exposes the `db-agent` skill. Every query passes through the policy gate before any driver loads or any connection opens. V2.0 vocab and defaults:
|
|
6
6
|
|
|
@@ -10,4 +10,4 @@ Exposes the `db-agent` skill. Every query passes through the policy gate before
|
|
|
10
10
|
- `admin` (CREATE/DROP/ALTER/RENAME) → returned as formatted SQL, never executed
|
|
11
11
|
- `privilege` (GRANT/REVOKE) → hard-denied
|
|
12
12
|
|
|
13
|
-
Install via Claude Code's plugin marketplace. The `SessionStart` hook installs
|
|
13
|
+
Install via Claude Code's plugin marketplace. The `SessionStart` hook installs `narai-primitives` into the plugin's data directory on first use.
|
|
@@ -6,7 +6,7 @@ if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
|
6
6
|
exit 2
|
|
7
7
|
fi
|
|
8
8
|
|
|
9
|
-
CLI="${CLAUDE_PLUGIN_DATA}/node_modules
|
|
9
|
+
CLI="${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/db/cli.js"
|
|
10
10
|
|
|
11
11
|
if [ ! -f "$CLI" ]; then
|
|
12
12
|
echo "db-agent: connector CLI not found at $CLI" >&2
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"type": "command",
|
|
11
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/
|
|
11
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/reminder.mjs\" 2>/dev/null || true"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"type": "command",
|
|
15
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
15
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/stale-summarize.mjs\" 2>/dev/null || true",
|
|
16
16
|
"env": { "USAGE_CONNECTOR_NAME": "db" }
|
|
17
17
|
}
|
|
18
18
|
]
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"hooks": [
|
|
25
25
|
{
|
|
26
26
|
"type": "command",
|
|
27
|
-
"command": "node ${CLAUDE_PLUGIN_ROOT}/
|
|
27
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/db-guard.mjs",
|
|
28
28
|
"env": {
|
|
29
29
|
"DB_AGENT_GUARDRAILS": "${user_config.install_guardrails}"
|
|
30
30
|
}
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"hooks": [
|
|
39
39
|
{
|
|
40
40
|
"type": "command",
|
|
41
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
41
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/usage-record.mjs\" 2>/dev/null || true",
|
|
42
42
|
"env": {
|
|
43
43
|
"USAGE_CONNECTOR_NAME": "db",
|
|
44
|
-
"USAGE_BIN_HINT": "
|
|
44
|
+
"USAGE_BIN_HINT": "narai-primitives/dist/connectors/db"
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
]
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"hooks": [
|
|
53
53
|
{
|
|
54
54
|
"type": "command",
|
|
55
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
55
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/session-summary.mjs\" 2>/dev/null || true",
|
|
56
56
|
"env": { "USAGE_CONNECTOR_NAME": "db" }
|
|
57
57
|
}
|
|
58
58
|
]
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
try {
|
|
6
6
|
const data = process.env.CLAUDE_PLUGIN_DATA;
|
|
7
7
|
if (!data) process.exit(0);
|
|
8
|
-
const toolkitEntry = `${data}/node_modules
|
|
8
|
+
const toolkitEntry = `${data}/node_modules/narai-primitives/dist/toolkit/plugin/reminder.js`;
|
|
9
9
|
const mod = await import(toolkitEntry);
|
|
10
10
|
const decision = mod.evaluateNudge({ connectors: ["db"] });
|
|
11
11
|
if (decision.nudge) {
|
|
@@ -14,7 +14,7 @@ context: fork
|
|
|
14
14
|
# Database Agent
|
|
15
15
|
|
|
16
16
|
Answer the user's question by invoking the `db-agent` binary exposed by this
|
|
17
|
-
plugin. It delegates to
|
|
17
|
+
plugin. It delegates to `narai-primitives/db`, which enforces the
|
|
18
18
|
policy gate before any backend is touched.
|
|
19
19
|
|
|
20
20
|
## Invocation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gcp-agent-plugin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Read-only GCP connector for Claude Code.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Read-only GCP connector for Claude Code. Built on narai-primitives (subpath ./gcp). Cloud Run, Cloud SQL, Pub/Sub, Cloud Logging.",
|
|
5
5
|
"author": "narai"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# gcp-agent-plugin
|
|
2
2
|
|
|
3
|
-
Claude Code plugin that wraps [
|
|
3
|
+
Claude Code plugin that wraps [`narai-primitives/gcp`](https://www.npmjs.com/package/narai-primitives) as a read-only GCP skill and slash command.
|
|
4
4
|
|
|
5
5
|
- **Skill** `gcp-agent` — automatic invocation for Cloud Run / Cloud SQL / Pub/Sub / Cloud Logging questions.
|
|
6
6
|
- **Slash command** `/gcp-agent <action> <params-json>`.
|
|
@@ -15,7 +15,7 @@ On first `SessionStart` the hook in `hooks/hooks.json`:
|
|
|
15
15
|
3. if the install fails, removes the stale copy so the hook re-runs next session.
|
|
16
16
|
|
|
17
17
|
After install,
|
|
18
|
-
`${CLAUDE_PLUGIN_DATA}/node_modules
|
|
18
|
+
`${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/gcp/cli.js`
|
|
19
19
|
exists and `bin/gcp-agent` exec's it.
|
|
20
20
|
|
|
21
21
|
## Credentials
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# gcp-agent — thin shim over
|
|
2
|
+
# gcp-agent — thin shim over narai-primitives (CLI at dist/connectors/gcp).
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
5
|
if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
@@ -7,7 +7,7 @@ if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
|
7
7
|
exit 2
|
|
8
8
|
fi
|
|
9
9
|
|
|
10
|
-
CLI="${CLAUDE_PLUGIN_DATA}/node_modules
|
|
10
|
+
CLI="${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/gcp/cli.js"
|
|
11
11
|
|
|
12
12
|
if [ ! -f "$CLI" ]; then
|
|
13
13
|
echo "gcp-agent: connector CLI not found at $CLI" >&2
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"type": "command",
|
|
12
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/
|
|
12
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/reminder.mjs\" 2>/dev/null || true"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"type": "command",
|
|
16
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
16
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/stale-summarize.mjs\" 2>/dev/null || true",
|
|
17
17
|
"env": { "USAGE_CONNECTOR_NAME": "gcp" }
|
|
18
18
|
}
|
|
19
19
|
]
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"hooks": [
|
|
26
26
|
{
|
|
27
27
|
"type": "command",
|
|
28
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
28
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/usage-record.mjs\" 2>/dev/null || true",
|
|
29
29
|
"env": {
|
|
30
30
|
"USAGE_CONNECTOR_NAME": "gcp",
|
|
31
|
-
"USAGE_BIN_HINT": "
|
|
31
|
+
"USAGE_BIN_HINT": "narai-primitives/dist/connectors/gcp"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
]
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"hooks": [
|
|
40
40
|
{
|
|
41
41
|
"type": "command",
|
|
42
|
-
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules
|
|
42
|
+
"command": "node \"${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/plugin-hooks/session-summary.mjs\" 2>/dev/null || true",
|
|
43
43
|
"env": { "USAGE_CONNECTOR_NAME": "gcp" }
|
|
44
44
|
}
|
|
45
45
|
]
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
try {
|
|
6
6
|
const data = process.env.CLAUDE_PLUGIN_DATA;
|
|
7
7
|
if (!data) process.exit(0);
|
|
8
|
-
const toolkitEntry = `${data}/node_modules
|
|
8
|
+
const toolkitEntry = `${data}/node_modules/narai-primitives/dist/toolkit/plugin/reminder.js`;
|
|
9
9
|
const mod = await import(toolkitEntry);
|
|
10
10
|
const decision = mod.evaluateNudge({ connectors: ["gcp"] });
|
|
11
11
|
if (decision.nudge) {
|
|
@@ -10,7 +10,7 @@ context: fork
|
|
|
10
10
|
# GCP Agent
|
|
11
11
|
|
|
12
12
|
Answer the user's question by invoking the `gcp-agent` binary exposed by
|
|
13
|
-
this plugin. It delegates to
|
|
13
|
+
this plugin. It delegates to `narai-primitives/gcp`, which speaks to
|
|
14
14
|
GCP by shelling out to `gcloud` / `bq` with Application Default Credentials.
|
|
15
15
|
|
|
16
16
|
## Invocation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github-agent-plugin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Read-only GitHub connector for Claude Code.
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Read-only GitHub connector for Claude Code. Built on narai-primitives (subpath ./github).",
|
|
5
5
|
"author": "narai"
|
|
6
6
|
}
|
|
@@ -6,7 +6,7 @@ if [ -z "${CLAUDE_PLUGIN_DATA:-}" ]; then
|
|
|
6
6
|
exit 2
|
|
7
7
|
fi
|
|
8
8
|
|
|
9
|
-
CLI="${CLAUDE_PLUGIN_DATA}/node_modules
|
|
9
|
+
CLI="${CLAUDE_PLUGIN_DATA}/node_modules/narai-primitives/dist/connectors/github/cli.js"
|
|
10
10
|
|
|
11
11
|
if [ ! -f "$CLI" ]; then
|
|
12
12
|
echo "github-agent: connector CLI not found at $CLI" >&2
|