narai-primitives 2.1.3 → 2.3.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/README.md +20 -4
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +12 -1
- package/dist/config/load.js.map +1 -1
- package/dist/connectors/confluence/index.d.ts +3 -1
- package/dist/connectors/confluence/index.d.ts.map +1 -1
- package/dist/connectors/confluence/index.js +246 -31
- package/dist/connectors/confluence/index.js.map +1 -1
- package/dist/connectors/confluence/lib/confluence_client.d.ts +50 -30
- package/dist/connectors/confluence/lib/confluence_client.d.ts.map +1 -1
- package/dist/connectors/confluence/lib/confluence_client.js +69 -225
- 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 +12 -6
- package/dist/connectors/db/connector.js.map +1 -1
- package/dist/connectors/db/dispatcher.d.ts +3 -2
- package/dist/connectors/db/dispatcher.d.ts.map +1 -1
- package/dist/connectors/db/dispatcher.js +142 -40
- package/dist/connectors/db/dispatcher.js.map +1 -1
- package/dist/connectors/db/index.d.ts +9 -0
- package/dist/connectors/db/index.d.ts.map +1 -1
- package/dist/connectors/db/index.js +9 -0
- package/dist/connectors/db/index.js.map +1 -1
- package/dist/connectors/db/lib/audit.d.ts.map +1 -1
- package/dist/connectors/db/lib/audit.js +46 -4
- package/dist/connectors/db/lib/audit.js.map +1 -1
- package/dist/connectors/db/lib/drivers/dynamodb.d.ts.map +1 -1
- package/dist/connectors/db/lib/drivers/dynamodb.js +24 -4
- package/dist/connectors/db/lib/drivers/dynamodb.js.map +1 -1
- package/dist/connectors/db/lib/drivers/mysql.js +1 -1
- package/dist/connectors/db/lib/drivers/mysql.js.map +1 -1
- package/dist/connectors/db/lib/drivers/postgresql.js +1 -1
- package/dist/connectors/db/lib/drivers/postgresql.js.map +1 -1
- package/dist/connectors/db/lib/drivers/sqlite.d.ts.map +1 -1
- package/dist/connectors/db/lib/drivers/sqlite.js +9 -5
- package/dist/connectors/db/lib/drivers/sqlite.js.map +1 -1
- package/dist/connectors/db/lib/drivers/sqlserver.d.ts.map +1 -1
- package/dist/connectors/db/lib/drivers/sqlserver.js +66 -32
- package/dist/connectors/db/lib/drivers/sqlserver.js.map +1 -1
- package/dist/connectors/db/lib/environments.d.ts +16 -0
- package/dist/connectors/db/lib/environments.d.ts.map +1 -1
- package/dist/connectors/db/lib/environments.js +16 -0
- package/dist/connectors/db/lib/environments.js.map +1 -1
- package/dist/connectors/db/lib/grant-store.d.ts +77 -0
- package/dist/connectors/db/lib/grant-store.d.ts.map +1 -0
- package/dist/connectors/db/lib/grant-store.js +158 -0
- package/dist/connectors/db/lib/grant-store.js.map +1 -0
- package/dist/connectors/db/lib/plugin_config.d.ts +2 -0
- package/dist/connectors/db/lib/plugin_config.d.ts.map +1 -1
- package/dist/connectors/db/lib/plugin_config.js +23 -2
- package/dist/connectors/db/lib/plugin_config.js.map +1 -1
- package/dist/connectors/db/lib/policy.d.ts +50 -14
- package/dist/connectors/db/lib/policy.d.ts.map +1 -1
- package/dist/connectors/db/lib/policy.js +298 -74
- package/dist/connectors/db/lib/policy.js.map +1 -1
- package/dist/connectors/github/actions/_fields.d.ts +18 -0
- package/dist/connectors/github/actions/_fields.d.ts.map +1 -0
- package/dist/connectors/github/actions/_fields.js +29 -0
- package/dist/connectors/github/actions/_fields.js.map +1 -0
- package/dist/connectors/github/actions/_pagination.d.ts +12 -0
- package/dist/connectors/github/actions/_pagination.d.ts.map +1 -0
- package/dist/connectors/github/actions/_pagination.js +26 -0
- package/dist/connectors/github/actions/_pagination.js.map +1 -0
- package/dist/connectors/github/actions/_types.d.ts +14 -0
- package/dist/connectors/github/actions/_types.d.ts.map +1 -0
- package/dist/connectors/github/actions/_types.js +2 -0
- package/dist/connectors/github/actions/_types.js.map +1 -0
- package/dist/connectors/github/actions/comments.d.ts +3 -0
- package/dist/connectors/github/actions/comments.d.ts.map +1 -0
- package/dist/connectors/github/actions/comments.js +166 -0
- package/dist/connectors/github/actions/comments.js.map +1 -0
- package/dist/connectors/github/actions/issues.d.ts +3 -0
- package/dist/connectors/github/actions/issues.d.ts.map +1 -0
- package/dist/connectors/github/actions/issues.js +129 -0
- package/dist/connectors/github/actions/issues.js.map +1 -0
- package/dist/connectors/github/actions/pulls.d.ts +3 -0
- package/dist/connectors/github/actions/pulls.d.ts.map +1 -0
- package/dist/connectors/github/actions/pulls.js +182 -0
- package/dist/connectors/github/actions/pulls.js.map +1 -0
- package/dist/connectors/github/actions/reads.d.ts +3 -0
- package/dist/connectors/github/actions/reads.d.ts.map +1 -0
- package/dist/connectors/github/actions/reads.js +349 -0
- package/dist/connectors/github/actions/reads.js.map +1 -0
- package/dist/connectors/github/actions/releases.d.ts +3 -0
- package/dist/connectors/github/actions/releases.d.ts.map +1 -0
- package/dist/connectors/github/actions/releases.js +124 -0
- package/dist/connectors/github/actions/releases.js.map +1 -0
- package/dist/connectors/github/actions/workflows.d.ts +3 -0
- package/dist/connectors/github/actions/workflows.d.ts.map +1 -0
- package/dist/connectors/github/actions/workflows.js +224 -0
- package/dist/connectors/github/actions/workflows.js.map +1 -0
- package/dist/connectors/github/index.d.ts +13 -1
- package/dist/connectors/github/index.d.ts.map +1 -1
- package/dist/connectors/github/index.js +33 -396
- package/dist/connectors/github/index.js.map +1 -1
- package/dist/connectors/github/lib/github_client.d.ts +242 -29
- package/dist/connectors/github/lib/github_client.d.ts.map +1 -1
- package/dist/connectors/github/lib/github_client.js +202 -256
- package/dist/connectors/github/lib/github_client.js.map +1 -1
- package/dist/connectors/github/lib/github_config.d.ts +10 -0
- package/dist/connectors/github/lib/github_config.d.ts.map +1 -0
- package/dist/connectors/github/lib/github_config.js +79 -0
- package/dist/connectors/github/lib/github_config.js.map +1 -0
- package/dist/connectors/gitlab/actions/_fields.d.ts +20 -0
- package/dist/connectors/gitlab/actions/_fields.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/_fields.js +44 -0
- package/dist/connectors/gitlab/actions/_fields.js.map +1 -0
- package/dist/connectors/gitlab/actions/_pagination.d.ts +19 -0
- package/dist/connectors/gitlab/actions/_pagination.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/_pagination.js +33 -0
- package/dist/connectors/gitlab/actions/_pagination.js.map +1 -0
- package/dist/connectors/gitlab/actions/_types.d.ts +12 -0
- package/dist/connectors/gitlab/actions/_types.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/_types.js +2 -0
- package/dist/connectors/gitlab/actions/_types.js.map +1 -0
- package/dist/connectors/gitlab/actions/issues.d.ts +3 -0
- package/dist/connectors/gitlab/actions/issues.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/issues.js +119 -0
- package/dist/connectors/gitlab/actions/issues.js.map +1 -0
- package/dist/connectors/gitlab/actions/merges.d.ts +3 -0
- package/dist/connectors/gitlab/actions/merges.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/merges.js +198 -0
- package/dist/connectors/gitlab/actions/merges.js.map +1 -0
- package/dist/connectors/gitlab/actions/notes.d.ts +3 -0
- package/dist/connectors/gitlab/actions/notes.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/notes.js +145 -0
- package/dist/connectors/gitlab/actions/notes.js.map +1 -0
- package/dist/connectors/gitlab/actions/pipelines.d.ts +3 -0
- package/dist/connectors/gitlab/actions/pipelines.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/pipelines.js +136 -0
- package/dist/connectors/gitlab/actions/pipelines.js.map +1 -0
- package/dist/connectors/gitlab/actions/reads.d.ts +3 -0
- package/dist/connectors/gitlab/actions/reads.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/reads.js +422 -0
- package/dist/connectors/gitlab/actions/reads.js.map +1 -0
- package/dist/connectors/gitlab/actions/releases.d.ts +3 -0
- package/dist/connectors/gitlab/actions/releases.d.ts.map +1 -0
- package/dist/connectors/gitlab/actions/releases.js +99 -0
- package/dist/connectors/gitlab/actions/releases.js.map +1 -0
- package/dist/connectors/gitlab/cli.d.ts +3 -0
- package/dist/connectors/gitlab/cli.d.ts.map +1 -0
- package/dist/connectors/gitlab/cli.js +24 -0
- package/dist/connectors/gitlab/cli.js.map +1 -0
- package/dist/connectors/gitlab/index.d.ts +29 -0
- package/dist/connectors/gitlab/index.d.ts.map +1 -0
- package/dist/connectors/gitlab/index.js +95 -0
- package/dist/connectors/gitlab/index.js.map +1 -0
- package/dist/connectors/gitlab/lib/gitlab_client.d.ts +306 -0
- package/dist/connectors/gitlab/lib/gitlab_client.d.ts.map +1 -0
- package/dist/connectors/gitlab/lib/gitlab_client.js +249 -0
- package/dist/connectors/gitlab/lib/gitlab_client.js.map +1 -0
- package/dist/connectors/gitlab/lib/gitlab_config.d.ts +11 -0
- package/dist/connectors/gitlab/lib/gitlab_config.d.ts.map +1 -0
- package/dist/connectors/gitlab/lib/gitlab_config.js +115 -0
- package/dist/connectors/gitlab/lib/gitlab_config.js.map +1 -0
- package/dist/connectors/jira/index.d.ts +3 -1
- package/dist/connectors/jira/index.d.ts.map +1 -1
- package/dist/connectors/jira/index.js +299 -41
- package/dist/connectors/jira/index.js.map +1 -1
- package/dist/connectors/jira/lib/jira_client.d.ts +56 -41
- package/dist/connectors/jira/lib/jira_client.d.ts.map +1 -1
- package/dist/connectors/jira/lib/jira_client.js +71 -248
- package/dist/connectors/jira/lib/jira_client.js.map +1 -1
- package/dist/connectors/linear/cli.d.ts +3 -0
- package/dist/connectors/linear/cli.d.ts.map +1 -0
- package/dist/connectors/linear/cli.js +22 -0
- package/dist/connectors/linear/cli.js.map +1 -0
- package/dist/connectors/linear/index.d.ts +27 -0
- package/dist/connectors/linear/index.d.ts.map +1 -0
- package/dist/connectors/linear/index.js +496 -0
- package/dist/connectors/linear/index.js.map +1 -0
- package/dist/connectors/linear/lib/linear_client.d.ts +249 -0
- package/dist/connectors/linear/lib/linear_client.d.ts.map +1 -0
- package/dist/connectors/linear/lib/linear_client.js +154 -0
- package/dist/connectors/linear/lib/linear_client.js.map +1 -0
- package/dist/connectors/linear/lib/queries.d.ts +15 -0
- package/dist/connectors/linear/lib/queries.d.ts.map +1 -0
- package/dist/connectors/linear/lib/queries.js +188 -0
- package/dist/connectors/linear/lib/queries.js.map +1 -0
- package/dist/connectors/notion/index.d.ts +2 -1
- package/dist/connectors/notion/index.d.ts.map +1 -1
- package/dist/connectors/notion/index.js +213 -28
- package/dist/connectors/notion/index.js.map +1 -1
- package/dist/connectors/notion/lib/markdown_to_blocks.d.ts +21 -0
- package/dist/connectors/notion/lib/markdown_to_blocks.d.ts.map +1 -0
- package/dist/connectors/notion/lib/markdown_to_blocks.js +102 -0
- package/dist/connectors/notion/lib/markdown_to_blocks.js.map +1 -0
- package/dist/connectors/notion/lib/notion_blocks.d.ts +34 -0
- package/dist/connectors/notion/lib/notion_blocks.d.ts.map +1 -0
- package/dist/connectors/notion/lib/notion_blocks.js +87 -0
- package/dist/connectors/notion/lib/notion_blocks.js.map +1 -0
- package/dist/connectors/notion/lib/notion_client.d.ts +35 -25
- package/dist/connectors/notion/lib/notion_client.d.ts.map +1 -1
- package/dist/connectors/notion/lib/notion_client.js +63 -185
- package/dist/connectors/notion/lib/notion_client.js.map +1 -1
- package/dist/hub/index.d.ts.map +1 -1
- package/dist/hub/index.js +23 -3
- package/dist/hub/index.js.map +1 -1
- package/dist/toolkit/agent_resolver.d.ts +14 -4
- package/dist/toolkit/agent_resolver.d.ts.map +1 -1
- package/dist/toolkit/agent_resolver.js +38 -6
- package/dist/toolkit/agent_resolver.js.map +1 -1
- package/dist/toolkit/atlassian/adf_validator.d.ts +45 -0
- package/dist/toolkit/atlassian/adf_validator.d.ts.map +1 -0
- package/dist/toolkit/atlassian/adf_validator.js +83 -0
- package/dist/toolkit/atlassian/adf_validator.js.map +1 -0
- package/dist/toolkit/atlassian/index.d.ts +5 -0
- package/dist/toolkit/atlassian/index.d.ts.map +1 -0
- package/dist/toolkit/atlassian/index.js +5 -0
- package/dist/toolkit/atlassian/index.js.map +1 -0
- package/dist/toolkit/audit/writer.d.ts.map +1 -1
- package/dist/toolkit/audit/writer.js +45 -5
- package/dist/toolkit/audit/writer.js.map +1 -1
- package/dist/toolkit/connector_error.d.ts +12 -0
- package/dist/toolkit/connector_error.d.ts.map +1 -0
- package/dist/toolkit/connector_error.js +18 -0
- package/dist/toolkit/connector_error.js.map +1 -0
- package/dist/toolkit/guardrail.d.ts +12 -2
- package/dist/toolkit/guardrail.d.ts.map +1 -1
- package/dist/toolkit/guardrail.js +17 -3
- package/dist/toolkit/guardrail.js.map +1 -1
- package/dist/toolkit/http_client.d.ts +134 -0
- package/dist/toolkit/http_client.d.ts.map +1 -0
- package/dist/toolkit/http_client.js +385 -0
- package/dist/toolkit/http_client.js.map +1 -0
- package/dist/toolkit/index.d.ts +3 -0
- package/dist/toolkit/index.d.ts.map +1 -1
- package/dist/toolkit/index.js +5 -0
- package/dist/toolkit/index.js.map +1 -1
- package/dist/toolkit/usage/aggregate.d.ts.map +1 -1
- package/dist/toolkit/usage/aggregate.js +19 -3
- package/dist/toolkit/usage/aggregate.js.map +1 -1
- package/package.json +14 -2
- package/plugin-hooks/dispatcher.mjs +639 -0
- package/plugin-hooks/plugin-config.mjs +36 -0
- package/plugins/{aws-agent → aws-connector}/.claude-plugin/plugin.json +1 -1
- package/plugins/{aws-agent → aws-connector}/README.md +7 -7
- package/plugins/{aws-agent/bin/aws-agent → aws-connector/bin/aws-connector} +3 -3
- package/plugins/aws-connector/commands/aws-connector.md +6 -0
- package/plugins/{gcp-agent → aws-connector}/hooks/hooks.json +12 -11
- package/plugins/aws-connector/package.json +9 -0
- package/plugins/aws-connector/plugin-config.json +4 -0
- package/plugins/{aws-agent/skills/aws-agent → aws-connector/skills/aws-connector}/SKILL.md +5 -5
- package/plugins/confluence-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/{confluence-agent → confluence-connector}/README.md +2 -2
- package/plugins/confluence-connector/bin/confluence-connector +17 -0
- package/plugins/confluence-connector/commands/confluence-connector.md +6 -0
- package/plugins/{jira-agent → confluence-connector}/hooks/hooks.json +12 -11
- package/plugins/confluence-connector/package.json +8 -0
- package/plugins/confluence-connector/plugin-config.json +4 -0
- package/plugins/confluence-connector/skills/confluence-connector/SKILL.md +146 -0
- package/plugins/{create-connector → connector-creator}/.claude-plugin/plugin.json +1 -1
- package/plugins/{create-connector → connector-creator}/README.md +2 -2
- package/plugins/connector-creator/skills/connector-creator/SKILL.md +412 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/_runtime/connector-gate.mjs.tmpl +120 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/composite/SKILL.md.tmpl +26 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/composite/bin.tmpl +2 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/composite/index.mjs.tmpl +35 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/knowledge/SKILL.md.tmpl +23 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/shell-gate/SKILL.md.tmpl +27 -0
- package/plugins/connector-creator/skills/connector-creator/assets/templates/shell-gate/gates.json.tmpl +5 -0
- package/plugins/connector-creator/skills/connector-creator/lib/connector-registry.mjs +43 -0
- package/plugins/connector-creator/skills/connector-creator/lib/settings-wiring.mjs +71 -0
- package/plugins/connector-creator/skills/connector-creator/references/connector-contract.md +79 -0
- package/plugins/connector-creator/skills/connector-creator/references/flavor-authoring.md +58 -0
- package/plugins/connector-creator/skills/connector-creator/references/research-patterns.md +51 -0
- package/plugins/{db-agent → db-connector}/.claude-plugin/plugin.json +3 -3
- package/plugins/{db-agent → db-connector}/README.md +2 -2
- package/plugins/{github-agent/bin/github-agent → db-connector/bin/db-connector} +3 -3
- package/plugins/db-connector/commands/db-connector.md +6 -0
- package/plugins/db-connector/gates.json +45 -0
- package/plugins/db-connector/gates.strict-bare.json +13 -0
- package/plugins/{db-agent → db-connector}/hooks/guardrails.json +4 -2
- package/plugins/{aws-agent → db-connector}/hooks/hooks.json +15 -11
- package/plugins/{db-agent → db-connector}/package.json +1 -1
- package/plugins/db-connector/plugin-config.json +5 -0
- package/plugins/{db-agent/skills/db-agent → db-connector/skills/db-connector}/SKILL.md +5 -5
- package/plugins/{gcp-agent → gcp-connector}/.claude-plugin/plugin.json +1 -1
- package/plugins/{gcp-agent → gcp-connector}/README.md +5 -5
- package/plugins/{gcp-agent/bin/gcp-agent → gcp-connector/bin/gcp-connector} +3 -3
- package/plugins/gcp-connector/commands/gcp-connector.md +6 -0
- package/plugins/{github-agent → gcp-connector}/hooks/hooks.json +12 -11
- package/plugins/gcp-connector/package.json +9 -0
- package/plugins/gcp-connector/plugin-config.json +4 -0
- package/plugins/{gcp-agent/skills/gcp-agent → gcp-connector/skills/gcp-connector}/SKILL.md +5 -5
- package/plugins/git-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/git-connector/CONTRIBUTING.md +117 -0
- package/plugins/git-connector/README.md +94 -0
- package/plugins/git-connector/SECURITY.md +143 -0
- package/plugins/git-connector/gates.json +67 -0
- package/plugins/git-connector/hooks/hooks.json +25 -0
- package/plugins/git-connector/package.json +9 -0
- package/plugins/git-connector/plugin-config.json +4 -0
- package/plugins/{github-agent → github-connector}/.claude-plugin/plugin.json +1 -1
- package/plugins/github-connector/README.md +48 -0
- package/plugins/{confluence-agent/bin/confluence-agent → github-connector/bin/github-connector} +3 -3
- package/plugins/github-connector/commands/github-connector.md +6 -0
- package/plugins/github-connector/hooks/hooks.json +50 -0
- package/plugins/{jira-agent → github-connector}/package.json +1 -1
- package/plugins/github-connector/plugin-config.json +4 -0
- package/plugins/github-connector/skills/github-connector/SKILL.md +106 -0
- package/plugins/gitlab-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/gitlab-connector/README.md +62 -0
- package/plugins/{db-agent/bin/db-agent → gitlab-connector/bin/gitlab-connector} +3 -3
- package/plugins/gitlab-connector/commands/gitlab-connector.md +6 -0
- package/plugins/gitlab-connector/gates.json +18 -0
- package/plugins/gitlab-connector/hooks/hooks.json +50 -0
- package/plugins/{confluence-agent → gitlab-connector}/package.json +1 -1
- package/plugins/gitlab-connector/plugin-config.json +4 -0
- package/plugins/gitlab-connector/skills/gitlab-connector/SKILL.md +115 -0
- package/plugins/jira-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/{jira-agent → jira-connector}/README.md +1 -1
- package/plugins/{jira-agent/bin/jira-agent → jira-connector/bin/jira-connector} +2 -2
- package/plugins/jira-connector/commands/jira-connector.md +6 -0
- package/plugins/jira-connector/gates.json +12 -0
- package/plugins/jira-connector/hooks/hooks.json +50 -0
- package/plugins/{github-agent → jira-connector}/package.json +1 -1
- package/plugins/jira-connector/plugin-config.json +4 -0
- package/plugins/jira-connector/skills/jira-connector/SKILL.md +146 -0
- package/plugins/linear-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/linear-connector/README.md +29 -0
- package/plugins/linear-connector/bin/linear-connector +17 -0
- package/plugins/linear-connector/commands/linear-connector.md +6 -0
- package/plugins/linear-connector/hooks/hooks.json +50 -0
- package/plugins/linear-connector/package.json +8 -0
- package/plugins/linear-connector/plugin-config.json +4 -0
- package/plugins/linear-connector/skills/linear-connector/SKILL.md +159 -0
- package/plugins/notion-connector/.claude-plugin/plugin.json +6 -0
- package/plugins/{notion-agent → notion-connector}/README.md +5 -5
- package/plugins/{notion-agent/bin/notion-agent → notion-connector/bin/notion-connector} +2 -2
- package/plugins/notion-connector/commands/notion-connector.md +6 -0
- package/plugins/notion-connector/hooks/hooks.json +50 -0
- package/plugins/notion-connector/package.json +8 -0
- package/plugins/notion-connector/plugin-config.json +4 -0
- package/plugins/notion-connector/skills/notion-connector/SKILL.md +141 -0
- package/dist/connectors/confluence/lib/confluence_error.d.ts +0 -13
- package/dist/connectors/confluence/lib/confluence_error.d.ts.map +0 -1
- package/dist/connectors/confluence/lib/confluence_error.js +0 -19
- package/dist/connectors/confluence/lib/confluence_error.js.map +0 -1
- package/dist/connectors/github/lib/github_error.d.ts +0 -11
- package/dist/connectors/github/lib/github_error.d.ts.map +0 -1
- package/dist/connectors/github/lib/github_error.js +0 -17
- package/dist/connectors/github/lib/github_error.js.map +0 -1
- package/dist/connectors/jira/lib/jira_error.d.ts +0 -11
- package/dist/connectors/jira/lib/jira_error.d.ts.map +0 -1
- package/dist/connectors/jira/lib/jira_error.js +0 -17
- package/dist/connectors/jira/lib/jira_error.js.map +0 -1
- package/dist/connectors/notion/lib/notion_error.d.ts +0 -12
- package/dist/connectors/notion/lib/notion_error.d.ts.map +0 -1
- package/dist/connectors/notion/lib/notion_error.js +0 -18
- package/dist/connectors/notion/lib/notion_error.js.map +0 -1
- package/plugins/aws-agent/commands/aws-agent.md +0 -6
- package/plugins/aws-agent/hooks/reminder.mjs +0 -16
- package/plugins/aws-agent/package.json +0 -9
- package/plugins/confluence-agent/.claude-plugin/plugin.json +0 -6
- package/plugins/confluence-agent/commands/confluence-agent.md +0 -6
- package/plugins/confluence-agent/hooks/hooks.json +0 -49
- package/plugins/confluence-agent/hooks/reminder.mjs +0 -25
- package/plugins/confluence-agent/skills/confluence-agent/SKILL.md +0 -40
- package/plugins/create-connector/skills/create-connector/SKILL.md +0 -252
- package/plugins/db-agent/commands/db-agent.md +0 -6
- package/plugins/db-agent/hooks/db-guard.mjs +0 -110
- package/plugins/db-agent/hooks/hooks.json +0 -61
- package/plugins/db-agent/hooks/reminder.mjs +0 -16
- package/plugins/gcp-agent/commands/gcp-agent.md +0 -6
- package/plugins/gcp-agent/hooks/reminder.mjs +0 -16
- package/plugins/gcp-agent/package.json +0 -9
- package/plugins/github-agent/README.md +0 -13
- package/plugins/github-agent/commands/github-agent.md +0 -6
- package/plugins/github-agent/hooks/reminder.mjs +0 -16
- package/plugins/github-agent/skills/github-agent/SKILL.md +0 -41
- package/plugins/jira-agent/.claude-plugin/plugin.json +0 -6
- package/plugins/jira-agent/commands/jira-agent.md +0 -6
- package/plugins/jira-agent/hooks/reminder.mjs +0 -16
- package/plugins/jira-agent/skills/jira-agent/SKILL.md +0 -37
- package/plugins/notion-agent/.claude-plugin/plugin.json +0 -6
- package/plugins/notion-agent/commands/notion-agent.md +0 -6
- package/plugins/notion-agent/hooks/hooks.json +0 -49
- package/plugins/notion-agent/hooks/reminder.mjs +0 -17
- package/plugins/notion-agent/package.json +0 -8
- package/plugins/notion-agent/skills/notion-agent/SKILL.md +0 -48
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/assets/templates/bin.tmpl +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/assets/templates/connector-SKILL.md.tmpl +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/assets/templates/index.mjs.tmpl +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/assets/templates/tests-example.mjs.tmpl +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/action-design.md +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/auth-patterns.md +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/connector-anatomy.md +0 -0
- /package/plugins/{create-connector/skills/create-connector/references/db-agent-pointer.md → connector-creator/skills/connector-creator/references/db-connector-pointer.md} +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/plugin-layer.md +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/template-sync.md +0 -0
- /package/plugins/{create-connector/skills/create-connector → connector-creator/skills/connector-creator}/references/verification.md +0 -0
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
* `<narai-primitives root>/dist/connectors/<name>/cli.js`. The
|
|
10
10
|
* resolver derives that root from its own file path via
|
|
11
11
|
* `import.meta.url`, so the lookup works regardless of install layout.
|
|
12
|
-
* 3. `~/.claude/plugins/cache/<name>-
|
|
13
|
-
* Code's plugin manager.
|
|
12
|
+
* 3. `~/.claude/plugins/cache/<name>-connector-plugin*` or
|
|
13
|
+
* `<name>-agent-plugin*` — populated by Claude Code's plugin manager.
|
|
14
|
+
* Both the post-rename and pre-rename forms are checked so users with
|
|
15
|
+
* mixed plugin caches resolve correctly during migration.
|
|
14
16
|
* 4. `${CLAUDE_PLUGIN_DATA}/node_modules/<package>/<cliRelativePath>` —
|
|
15
17
|
* where the connector's `SessionStart` hook installs it.
|
|
16
18
|
* 5. `~/src/connectors/<name>-agent-connector/<cliRelativePath>` — the
|
|
@@ -19,14 +21,22 @@
|
|
|
19
21
|
*
|
|
20
22
|
* Returns null if no candidate exists, so callers can fail with a clear
|
|
21
23
|
* message instead of crashing on `spawn`.
|
|
24
|
+
*
|
|
25
|
+
* Set `NARAI_DEBUG_RESOLVER=1` to emit a one-line stderr breadcrumb for each
|
|
26
|
+
* resolution attempt — off by default; intended for diagnosing silent CLI
|
|
27
|
+
* misses in the field.
|
|
22
28
|
*/
|
|
23
29
|
export interface ResolveAgentCliOptions {
|
|
24
30
|
/** Connector short name (e.g. `"confluence"`, `"db"`, `"aws"`). */
|
|
25
31
|
name: string;
|
|
26
32
|
/** Override env-var name. Default: `<NAME>_AGENT_CLI` (uppercased + underscores for hyphens). */
|
|
27
33
|
envVar?: string;
|
|
28
|
-
/**
|
|
29
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Substring(s) matched against entries in `~/.claude/plugins/cache/`.
|
|
36
|
+
* Default: `["<name>-connector-plugin", "<name>-agent-plugin"]` (both
|
|
37
|
+
* post-rename and pre-rename forms).
|
|
38
|
+
*/
|
|
39
|
+
pluginNameContains?: string | string[];
|
|
30
40
|
/** npm package the connector is published as. Default: `@narai/<name>-agent-connector`. */
|
|
31
41
|
packageName?: string;
|
|
32
42
|
/** CLI path within the package. Default: `dist/cli.js`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_resolver.d.ts","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent_resolver.d.ts","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAOH,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,gBAAgB,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;CACtB;AAsDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,IAAI,CAqFrF"}
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
* `<narai-primitives root>/dist/connectors/<name>/cli.js`. The
|
|
10
10
|
* resolver derives that root from its own file path via
|
|
11
11
|
* `import.meta.url`, so the lookup works regardless of install layout.
|
|
12
|
-
* 3. `~/.claude/plugins/cache/<name>-
|
|
13
|
-
* Code's plugin manager.
|
|
12
|
+
* 3. `~/.claude/plugins/cache/<name>-connector-plugin*` or
|
|
13
|
+
* `<name>-agent-plugin*` — populated by Claude Code's plugin manager.
|
|
14
|
+
* Both the post-rename and pre-rename forms are checked so users with
|
|
15
|
+
* mixed plugin caches resolve correctly during migration.
|
|
14
16
|
* 4. `${CLAUDE_PLUGIN_DATA}/node_modules/<package>/<cliRelativePath>` —
|
|
15
17
|
* where the connector's `SessionStart` hook installs it.
|
|
16
18
|
* 5. `~/src/connectors/<name>-agent-connector/<cliRelativePath>` — the
|
|
@@ -19,6 +21,10 @@
|
|
|
19
21
|
*
|
|
20
22
|
* Returns null if no candidate exists, so callers can fail with a clear
|
|
21
23
|
* message instead of crashing on `spawn`.
|
|
24
|
+
*
|
|
25
|
+
* Set `NARAI_DEBUG_RESOLVER=1` to emit a one-line stderr breadcrumb for each
|
|
26
|
+
* resolution attempt — off by default; intended for diagnosing silent CLI
|
|
27
|
+
* misses in the field.
|
|
22
28
|
*/
|
|
23
29
|
import * as fs from "node:fs";
|
|
24
30
|
import * as os from "node:os";
|
|
@@ -27,8 +33,13 @@ import { fileURLToPath } from "node:url";
|
|
|
27
33
|
function defaultEnvVar(name) {
|
|
28
34
|
return `${name.toUpperCase().replace(/-/g, "_")}_AGENT_CLI`;
|
|
29
35
|
}
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Default substrings matched against entries in ~/.claude/plugins/cache/.
|
|
38
|
+
* Returns both the post-rename and pre-rename forms so users with mixed
|
|
39
|
+
* plugin caches resolve correctly during migration.
|
|
40
|
+
*/
|
|
41
|
+
function defaultPluginNameSubstrings(name) {
|
|
42
|
+
return [`${name}-connector-plugin`, `${name}-agent-plugin`];
|
|
32
43
|
}
|
|
33
44
|
function defaultPackageName(name) {
|
|
34
45
|
return `@narai/${name}-agent-connector`;
|
|
@@ -55,11 +66,26 @@ function defaultBundledSelfRoot() {
|
|
|
55
66
|
return null;
|
|
56
67
|
}
|
|
57
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Emit a one-line breadcrumb to stderr when `NARAI_DEBUG_RESOLVER=1` is set.
|
|
71
|
+
*
|
|
72
|
+
* Off by default — operators opt in when diagnosing silent CLI-not-found or
|
|
73
|
+
* unexpected-fallback failures (the class of bug that drove 2.1.1/2.1.2).
|
|
74
|
+
*/
|
|
75
|
+
function debugLog(env, msg) {
|
|
76
|
+
if (env["NARAI_DEBUG_RESOLVER"] === "1") {
|
|
77
|
+
process.stderr.write(`[narai-primitives:resolver] ${msg}\n`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
58
80
|
export function resolveAgentCli(opts) {
|
|
59
81
|
const env = opts.envOverride ?? process.env;
|
|
60
82
|
const home = opts.homeOverride ?? os.homedir();
|
|
61
83
|
const envVar = opts.envVar ?? defaultEnvVar(opts.name);
|
|
62
|
-
const
|
|
84
|
+
const pluginContainsList = Array.isArray(opts.pluginNameContains)
|
|
85
|
+
? opts.pluginNameContains
|
|
86
|
+
: opts.pluginNameContains !== undefined
|
|
87
|
+
? [opts.pluginNameContains]
|
|
88
|
+
: defaultPluginNameSubstrings(opts.name);
|
|
63
89
|
const packageName = opts.packageName ?? defaultPackageName(opts.name);
|
|
64
90
|
const cliRelative = opts.cliRelativePath ?? "dist/cli.js";
|
|
65
91
|
const devRoot = opts.devRoot ?? defaultDevRoot(home);
|
|
@@ -69,6 +95,7 @@ export function resolveAgentCli(opts) {
|
|
|
69
95
|
// 1. Explicit env-var override.
|
|
70
96
|
const envPath = env[envVar];
|
|
71
97
|
if (typeof envPath === "string" && envPath !== "" && fs.existsSync(envPath)) {
|
|
98
|
+
debugLog(env, `'${opts.name}' resolved via env (${envVar}): ${envPath}`);
|
|
72
99
|
return { command: "node", args: [envPath], source: "env", resolvedPath: envPath };
|
|
73
100
|
}
|
|
74
101
|
// 2. Bundled-self: the canonical 2.x layout ships every connector CLI at
|
|
@@ -78,6 +105,7 @@ export function resolveAgentCli(opts) {
|
|
|
78
105
|
if (bundledSelfRoot !== null) {
|
|
79
106
|
const bundledCli = path.join(bundledSelfRoot, "dist", "connectors", opts.name, "cli.js");
|
|
80
107
|
if (fs.existsSync(bundledCli)) {
|
|
108
|
+
debugLog(env, `'${opts.name}' resolved via bundled-self: ${bundledCli}`);
|
|
81
109
|
return {
|
|
82
110
|
command: "node",
|
|
83
111
|
args: [bundledCli],
|
|
@@ -97,10 +125,11 @@ export function resolveAgentCli(opts) {
|
|
|
97
125
|
entries = [];
|
|
98
126
|
}
|
|
99
127
|
for (const entry of entries) {
|
|
100
|
-
if (!entry.includes(
|
|
128
|
+
if (!pluginContainsList.some((sub) => entry.includes(sub)))
|
|
101
129
|
continue;
|
|
102
130
|
const candidate = path.join(pluginCache, entry, "node_modules", packageName, cliRelative);
|
|
103
131
|
if (fs.existsSync(candidate)) {
|
|
132
|
+
debugLog(env, `'${opts.name}' resolved via plugin-cache: ${candidate}`);
|
|
104
133
|
return { command: "node", args: [candidate], source: "plugin-cache", resolvedPath: candidate };
|
|
105
134
|
}
|
|
106
135
|
}
|
|
@@ -110,14 +139,17 @@ export function resolveAgentCli(opts) {
|
|
|
110
139
|
if (typeof pluginData === "string" && pluginData !== "") {
|
|
111
140
|
const candidate = path.join(pluginData, "node_modules", packageName, cliRelative);
|
|
112
141
|
if (fs.existsSync(candidate)) {
|
|
142
|
+
debugLog(env, `'${opts.name}' resolved via claude-plugin-data: ${candidate}`);
|
|
113
143
|
return { command: "node", args: [candidate], source: "claude-plugin-data", resolvedPath: candidate };
|
|
114
144
|
}
|
|
115
145
|
}
|
|
116
146
|
// 5. Dev fallback (legacy ~/src/connectors/<name>-agent-connector layout).
|
|
117
147
|
const devCandidate = path.join(devRoot, `${opts.name}-agent-connector`, cliRelative);
|
|
118
148
|
if (fs.existsSync(devCandidate)) {
|
|
149
|
+
debugLog(env, `'${opts.name}' resolved via dev-fallback: ${devCandidate}`);
|
|
119
150
|
return { command: "node", args: [devCandidate], source: "dev-fallback", resolvedPath: devCandidate };
|
|
120
151
|
}
|
|
152
|
+
debugLog(env, `'${opts.name}' not resolved (no candidate found in any of: env, bundled-self, plugin-cache, claude-plugin-data, dev-fallback)`);
|
|
121
153
|
return null;
|
|
122
154
|
}
|
|
123
155
|
//# sourceMappingURL=agent_resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_resolver.js","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent_resolver.js","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural validator for Atlassian Document Format (ADF) documents.
|
|
3
|
+
*
|
|
4
|
+
* Strict on the root: must be `{type: "doc", version: 1, content: array}`.
|
|
5
|
+
* Permissive on leaf nodes: any string `type` is accepted, since Atlassian
|
|
6
|
+
* extends ADF over time. Unknown leaf types surface as warnings rather than
|
|
7
|
+
* errors so the validator does not have to chase the schema; callers decide
|
|
8
|
+
* whether to allow them.
|
|
9
|
+
*
|
|
10
|
+
* No schema dependency. The 25-or-so node types whitelisted below cover the
|
|
11
|
+
* common surface needed for issue/comment bodies, page content, and panels
|
|
12
|
+
* — extending this list is additive and does not break callers.
|
|
13
|
+
*/
|
|
14
|
+
export interface ADFNode {
|
|
15
|
+
type: string;
|
|
16
|
+
content?: ADFNode[];
|
|
17
|
+
marks?: Array<{
|
|
18
|
+
type: string;
|
|
19
|
+
attrs?: Record<string, unknown>;
|
|
20
|
+
}>;
|
|
21
|
+
attrs?: Record<string, unknown>;
|
|
22
|
+
text?: string;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface ADFDocument {
|
|
26
|
+
type: "doc";
|
|
27
|
+
version: 1;
|
|
28
|
+
content: ADFNode[];
|
|
29
|
+
}
|
|
30
|
+
export type ValidateResult = {
|
|
31
|
+
ok: true;
|
|
32
|
+
warnings: string[];
|
|
33
|
+
} | {
|
|
34
|
+
ok: false;
|
|
35
|
+
errors: string[];
|
|
36
|
+
warnings: string[];
|
|
37
|
+
};
|
|
38
|
+
export declare function validateAdf(input: unknown): ValidateResult;
|
|
39
|
+
/**
|
|
40
|
+
* Convenience wrapper: throw a single VALIDATION_ERROR-shaped Error if the
|
|
41
|
+
* document is invalid. Use at the connector boundary where errors are mapped
|
|
42
|
+
* to the toolkit's error envelope.
|
|
43
|
+
*/
|
|
44
|
+
export declare function assertValidAdf(input: unknown): asserts input is ADFDocument;
|
|
45
|
+
//# sourceMappingURL=adf_validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adf_validator.d.ts","sourceRoot":"","sources":["../../../src/toolkit/atlassian/adf_validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAChC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAaxD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA0B1D;AAkCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAK3E"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural validator for Atlassian Document Format (ADF) documents.
|
|
3
|
+
*
|
|
4
|
+
* Strict on the root: must be `{type: "doc", version: 1, content: array}`.
|
|
5
|
+
* Permissive on leaf nodes: any string `type` is accepted, since Atlassian
|
|
6
|
+
* extends ADF over time. Unknown leaf types surface as warnings rather than
|
|
7
|
+
* errors so the validator does not have to chase the schema; callers decide
|
|
8
|
+
* whether to allow them.
|
|
9
|
+
*
|
|
10
|
+
* No schema dependency. The 25-or-so node types whitelisted below cover the
|
|
11
|
+
* common surface needed for issue/comment bodies, page content, and panels
|
|
12
|
+
* — extending this list is additive and does not break callers.
|
|
13
|
+
*/
|
|
14
|
+
const KNOWN_NODE_TYPES = new Set([
|
|
15
|
+
"doc",
|
|
16
|
+
"paragraph", "heading", "blockquote", "codeBlock", "rule", "panel",
|
|
17
|
+
"bulletList", "orderedList", "listItem",
|
|
18
|
+
"text", "hardBreak", "mention", "emoji", "inlineCard", "link",
|
|
19
|
+
"table", "tableRow", "tableCell", "tableHeader",
|
|
20
|
+
"media", "mediaSingle", "mediaGroup",
|
|
21
|
+
"expand", "nestedExpand",
|
|
22
|
+
"decisionList", "decisionItem", "taskList", "taskItem",
|
|
23
|
+
]);
|
|
24
|
+
export function validateAdf(input) {
|
|
25
|
+
const errors = [];
|
|
26
|
+
const warnings = [];
|
|
27
|
+
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
28
|
+
return { ok: false, errors: ["root: expected an object"], warnings };
|
|
29
|
+
}
|
|
30
|
+
const doc = input;
|
|
31
|
+
if (doc["type"] !== "doc") {
|
|
32
|
+
errors.push(`root.type: expected "doc", got ${JSON.stringify(doc["type"])}`);
|
|
33
|
+
}
|
|
34
|
+
if (doc["version"] !== 1) {
|
|
35
|
+
errors.push(`root.version: expected 1, got ${JSON.stringify(doc["version"])}`);
|
|
36
|
+
}
|
|
37
|
+
if (!Array.isArray(doc["content"])) {
|
|
38
|
+
errors.push(`root.content: expected an array, got ${typeof doc["content"]}`);
|
|
39
|
+
return { ok: false, errors, warnings };
|
|
40
|
+
}
|
|
41
|
+
for (let i = 0; i < doc["content"].length; i++) {
|
|
42
|
+
walkNode(doc["content"][i], `root.content[${i}]`, errors, warnings);
|
|
43
|
+
}
|
|
44
|
+
if (errors.length > 0)
|
|
45
|
+
return { ok: false, errors, warnings };
|
|
46
|
+
return { ok: true, warnings };
|
|
47
|
+
}
|
|
48
|
+
function walkNode(node, path, errors, warnings) {
|
|
49
|
+
if (typeof node !== "object" || node === null || Array.isArray(node)) {
|
|
50
|
+
errors.push(`${path}: expected an object, got ${typeof node}`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const n = node;
|
|
54
|
+
if (typeof n["type"] !== "string") {
|
|
55
|
+
errors.push(`${path}.type: expected string, got ${typeof n["type"]}`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!KNOWN_NODE_TYPES.has(n["type"])) {
|
|
59
|
+
warnings.push(`${path}.type: unknown ADF node type "${n["type"]}" (allowed)`);
|
|
60
|
+
}
|
|
61
|
+
const content = n["content"];
|
|
62
|
+
if (content !== undefined) {
|
|
63
|
+
if (!Array.isArray(content)) {
|
|
64
|
+
errors.push(`${path}.content: expected an array, got ${typeof content}`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
for (let i = 0; i < content.length; i++) {
|
|
68
|
+
walkNode(content[i], `${path}.content[${i}]`, errors, warnings);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Convenience wrapper: throw a single VALIDATION_ERROR-shaped Error if the
|
|
74
|
+
* document is invalid. Use at the connector boundary where errors are mapped
|
|
75
|
+
* to the toolkit's error envelope.
|
|
76
|
+
*/
|
|
77
|
+
export function assertValidAdf(input) {
|
|
78
|
+
const result = validateAdf(input);
|
|
79
|
+
if (!result.ok) {
|
|
80
|
+
throw new Error(`Invalid ADF document: ${result.errors.join("; ")}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=adf_validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adf_validator.js","sourceRoot":"","sources":["../../../src/toolkit/atlassian/adf_validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/toolkit/atlassian/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/toolkit/atlassian/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,GAIf,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/toolkit/audit/writer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/toolkit/audit/writer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgCjD;AAOD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CACN,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5E,IAAI,CAAC;CACT;AA+CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAQvE"}
|
|
@@ -11,13 +11,53 @@
|
|
|
11
11
|
import * as crypto from "node:crypto";
|
|
12
12
|
import * as fs from "node:fs";
|
|
13
13
|
import * as path from "node:path";
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Redact common credential-bearing `key='value'` literals in a string.
|
|
16
|
+
*
|
|
17
|
+
* Key/separator are captured as distinct groups so the original separator
|
|
18
|
+
* (e.g. `:` for JSON payloads, `=` for SQL or env-style) is preserved
|
|
19
|
+
* verbatim — hard-coding `=` would mangle `{"password":"x"}` into
|
|
20
|
+
* `{"password"='[REDACTED]'}` and break downstream JSON-per-line parsers.
|
|
21
|
+
*
|
|
22
|
+
* The `\b` boundaries ensure we only match the sensitive keyword as a
|
|
23
|
+
* complete word (or wrapped in JSON quotes), so `mytoken='x'` and
|
|
24
|
+
* `notpassword='x'` don't get spuriously redacted.
|
|
25
|
+
*
|
|
26
|
+
* Value classes use `(?:\\.|[^Q\\])*` (Q = the active quote) so escape
|
|
27
|
+
* sequences like `\"` inside JSON-encoded values are skipped rather than
|
|
28
|
+
* treated as the closing quote.
|
|
29
|
+
*
|
|
30
|
+
* AUTH redaction uses two anchored patterns instead of one unanchored one:
|
|
31
|
+
*
|
|
32
|
+
* QUOTED_RE — preceded by `"` or `'` (JSON key OR string-value context).
|
|
33
|
+
* Value class is `[^"'\r\n]+` so the unquoted branch can't consume
|
|
34
|
+
* past the JSON value's closing quote and mangle the outer payload.
|
|
35
|
+
*
|
|
36
|
+
* LINE_RE — anchored to `^` or `\r\n` (HTTP-header / env form). Value
|
|
37
|
+
* class is `[^\r\n]+` so Digest parameters with embedded quotes
|
|
38
|
+
* (`Digest username="u", response="…"`) are fully consumed.
|
|
39
|
+
*
|
|
40
|
+
* Anchoring to a field boundary avoids the regression from a single
|
|
41
|
+
* unanchored pattern, where `{"message":"authorization: Bearer abc"}`
|
|
42
|
+
* matched mid-string and the greedy unquoted value class swallowed the
|
|
43
|
+
* trailing `"}`, producing unterminated JSON.
|
|
44
|
+
*/
|
|
45
|
+
const SENSITIVE_KEYS = "password|passwd|pwd|token|api[_-]?key|secret|access[_-]?key|auth";
|
|
46
|
+
const SENSITIVE_SQUOTE_RE = new RegExp(`("?\\b(?:${SENSITIVE_KEYS})\\b"?)(\\s*[:=]\\s*)'(?:[^'\\\\]|\\\\.)*'`, "gi");
|
|
47
|
+
const SENSITIVE_DQUOTE_RE = new RegExp(`("?\\b(?:${SENSITIVE_KEYS})\\b"?)(\\s*[:=]\\s*)"(?:[^"\\\\]|\\\\.)*"`, "gi");
|
|
48
|
+
const SENSITIVE_AUTH_QUOTED_RE = /(?<=["'])(\bauthorization\b)("?)(\s*[:=]\s*)(?:(["'])((?:bearer|basic)\s+)?(?:\\.|[^\r\n\\])*?\4|((?:bearer|basic)\s+)?[^"'\r\n]+)/gi;
|
|
49
|
+
const SENSITIVE_AUTH_LINE_RE = /(?:^|(?<=[\r\n]))(\bauthorization\b)(\s*[:=]\s*)((?:bearer|basic)\s+)?[^\r\n]+/gi;
|
|
17
50
|
export function scrubSecrets(text) {
|
|
18
51
|
return text
|
|
19
|
-
.replace(SENSITIVE_SQUOTE_RE, (_m, key) => `${key}
|
|
20
|
-
.replace(SENSITIVE_DQUOTE_RE, (_m, key) => `${key}
|
|
52
|
+
.replace(SENSITIVE_SQUOTE_RE, (_m, key, sep) => `${key}${sep}'[REDACTED]'`)
|
|
53
|
+
.replace(SENSITIVE_DQUOTE_RE, (_m, key, sep) => `${key}${sep}"[REDACTED]"`)
|
|
54
|
+
.replace(SENSITIVE_AUTH_QUOTED_RE, (_m, kw, keyQuote, sep, valQuote, schemeQ, schemeU) => {
|
|
55
|
+
if (valQuote !== undefined) {
|
|
56
|
+
return `${kw}${keyQuote}${sep}${valQuote}${schemeQ || ""}[REDACTED]${valQuote}`;
|
|
57
|
+
}
|
|
58
|
+
return `${kw}${keyQuote}${sep}${schemeU || ""}[REDACTED]`;
|
|
59
|
+
})
|
|
60
|
+
.replace(SENSITIVE_AUTH_LINE_RE, (_m, kw, sep, scheme) => `${kw}${sep}${scheme || ""}[REDACTED]`);
|
|
21
61
|
}
|
|
22
62
|
function isoTimestamp() {
|
|
23
63
|
const iso = new Date().toISOString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/toolkit/audit/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAWlC,
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/toolkit/audit/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridges an HTTP/SDK client's `{ok: false, code, ...}` result shape to the
|
|
3
|
+
* handler-throws-an-Error contract expected by `createConnector`. One class
|
|
4
|
+
* replaces the per-connector error classes that all had the same shape.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ConnectorError extends Error {
|
|
7
|
+
readonly code: string;
|
|
8
|
+
readonly retriable: boolean;
|
|
9
|
+
readonly httpStatus: number | undefined;
|
|
10
|
+
constructor(code: string, message: string, retriable: boolean, httpStatus?: number);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=connector_error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector_error.d.ts","sourceRoot":"","sources":["../../src/toolkit/connector_error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,MAAM;CAQtB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridges an HTTP/SDK client's `{ok: false, code, ...}` result shape to the
|
|
3
|
+
* handler-throws-an-Error contract expected by `createConnector`. One class
|
|
4
|
+
* replaces the per-connector error classes that all had the same shape.
|
|
5
|
+
*/
|
|
6
|
+
export class ConnectorError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
retriable;
|
|
9
|
+
httpStatus;
|
|
10
|
+
constructor(code, message, retriable, httpStatus) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "ConnectorError";
|
|
13
|
+
this.code = code;
|
|
14
|
+
this.retriable = retriable;
|
|
15
|
+
this.httpStatus = httpStatus;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=connector_error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector_error.js","sourceRoot":"","sources":["../../src/toolkit/connector_error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAS;IACb,SAAS,CAAU;IACnB,UAAU,CAAqB;IAExC,YACE,IAAY,EACZ,OAAe,EACf,SAAkB,EAClB,UAAmB;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -10,8 +10,11 @@
|
|
|
10
10
|
* so every consumer (the per-connector hooks AND the hub's unified hook)
|
|
11
11
|
* evaluates the same way.
|
|
12
12
|
*
|
|
13
|
-
* Best-effort
|
|
14
|
-
*
|
|
13
|
+
* Best-effort by default: the engine fails open on parse errors, so the
|
|
14
|
+
* default posture is not a security boundary. An opt-in fail-closed mode
|
|
15
|
+
* (the NARAI_GATE_ENFORCEMENT env var / a manifest `enforcement` field,
|
|
16
|
+
* applied by the PreToolUse dispatcher) turns parse and compile failures
|
|
17
|
+
* into hard denies. Callers still handle missing/invalid manifests.
|
|
15
18
|
*/
|
|
16
19
|
export interface GuardrailRule {
|
|
17
20
|
/**
|
|
@@ -37,6 +40,13 @@ export interface GuardrailManifest {
|
|
|
37
40
|
/** Source connector name; surfaces in deny messages. */
|
|
38
41
|
name: string;
|
|
39
42
|
rules: GuardrailRule[];
|
|
43
|
+
/**
|
|
44
|
+
* Optional opt-in enforcement posture for evaluating this manifest. When
|
|
45
|
+
* "fail_closed", failures to evaluate a rule become hard denies. Defaults
|
|
46
|
+
* to fail-open (best-effort) when absent. Applied by the PreToolUse
|
|
47
|
+
* dispatcher together with the NARAI_GATE_ENFORCEMENT env var.
|
|
48
|
+
*/
|
|
49
|
+
enforcement?: "fail_open" | "fail_closed";
|
|
40
50
|
}
|
|
41
51
|
export interface BlockMatch {
|
|
42
52
|
manifest: GuardrailManifest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrail.d.ts","sourceRoot":"","sources":["../../src/toolkit/guardrail.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"guardrail.d.ts","sourceRoot":"","sources":["../../src/toolkit/guardrail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,OAAO,EAAE,CAAC,CAAC;IACX,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CASzE;AAsCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,KAAK,SAAI,GACR,UAAU,GAAG,IAAI,CAwCnB;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAW5D"}
|
|
@@ -10,8 +10,11 @@
|
|
|
10
10
|
* so every consumer (the per-connector hooks AND the hub's unified hook)
|
|
11
11
|
* evaluates the same way.
|
|
12
12
|
*
|
|
13
|
-
* Best-effort
|
|
14
|
-
*
|
|
13
|
+
* Best-effort by default: the engine fails open on parse errors, so the
|
|
14
|
+
* default posture is not a security boundary. An opt-in fail-closed mode
|
|
15
|
+
* (the NARAI_GATE_ENFORCEMENT env var / a manifest `enforcement` field,
|
|
16
|
+
* applied by the PreToolUse dispatcher) turns parse and compile failures
|
|
17
|
+
* into hard denies. Callers still handle missing/invalid manifests.
|
|
15
18
|
*/
|
|
16
19
|
import * as fs from "node:fs";
|
|
17
20
|
const SHELLS = new Set(["bash", "sh", "zsh", "ksh", "dash"]);
|
|
@@ -51,7 +54,18 @@ function validateManifest(value, filePath) {
|
|
|
51
54
|
}
|
|
52
55
|
return r;
|
|
53
56
|
});
|
|
54
|
-
|
|
57
|
+
const manifest = {
|
|
58
|
+
version: 1,
|
|
59
|
+
name: obj["name"],
|
|
60
|
+
rules,
|
|
61
|
+
};
|
|
62
|
+
if (obj["enforcement"] !== undefined) {
|
|
63
|
+
if (obj["enforcement"] !== "fail_open" && obj["enforcement"] !== "fail_closed") {
|
|
64
|
+
throw new Error(`Guardrail manifest at ${filePath}: 'enforcement' must be "fail_open" or "fail_closed".`);
|
|
65
|
+
}
|
|
66
|
+
manifest.enforcement = obj["enforcement"];
|
|
67
|
+
}
|
|
68
|
+
return manifest;
|
|
55
69
|
}
|
|
56
70
|
/**
|
|
57
71
|
* Walk a Bash command, including `&&`/`||`/`;`/`|` segments and nested
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrail.js","sourceRoot":"","sources":["../../src/toolkit/guardrail.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"guardrail.js","sourceRoot":"","sources":["../../src/toolkit/guardrail.ts"],"names":[],"mappings":"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"}
|