narai-primitives 2.1.3 → 2.2.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 +16 -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 +136 -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 +70 -0
- package/dist/connectors/db/lib/grant-store.d.ts.map +1 -0
- package/dist/connectors/db/lib/grant-store.js +149 -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 +295 -73
- 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 +584 -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 +37 -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 +54 -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/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/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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types used by every action-module factory. Each module exports a
|
|
3
|
+
* factory `buildXActions(deps)` returning an action registry. Keeping the
|
|
4
|
+
* dep shape in one place avoids drift across the six modules.
|
|
5
|
+
*/
|
|
6
|
+
import type { ActionSpec } from "narai-primitives/toolkit";
|
|
7
|
+
import type { GithubBehavior } from "../lib/github_config.js";
|
|
8
|
+
import type { GithubClient } from "../lib/github_client.js";
|
|
9
|
+
export type GithubActions = Record<string, ActionSpec<any, GithubClient>>;
|
|
10
|
+
export interface GithubActionDeps {
|
|
11
|
+
/** Runtime knobs (require_draft_pr, ...). */
|
|
12
|
+
behavior: GithubBehavior;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=_types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../../src/connectors/github/actions/_types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,QAAQ,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../src/connectors/github/actions/_types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../src/connectors/github/actions/comments.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgHnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CA+F3E"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment action specs — six actions across two distinct APIs:
|
|
3
|
+
* - Issue-conversation comments: top-level threaded comments on issues
|
|
4
|
+
* (also visible on PRs as "conversation" tab).
|
|
5
|
+
* - PR review-inline comments: file-and-line anchored comments on a PR diff.
|
|
6
|
+
*
|
|
7
|
+
* Delete actions carry the delete aspect.
|
|
8
|
+
*/
|
|
9
|
+
import { throwIfHttpError } from "narai-primitives/toolkit";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { issueNumberField, ownerRepoField, pullNumberField, } from "./_fields.js";
|
|
12
|
+
// Local fields not shared with other modules yet.
|
|
13
|
+
const shaField = z.string().regex(/^[a-f0-9]{7,40}$/, "Expected a git SHA");
|
|
14
|
+
const pathField = z
|
|
15
|
+
.string()
|
|
16
|
+
.min(1)
|
|
17
|
+
.refine((p) => !p.includes(".."), { message: "Path traversal not allowed" });
|
|
18
|
+
const commentIdField = z.coerce.number().int().positive();
|
|
19
|
+
// ─── Param schemas ────────────────────────────────────────────────────────
|
|
20
|
+
const addIssueCommentParams = z.object({
|
|
21
|
+
owner: ownerRepoField,
|
|
22
|
+
repo: ownerRepoField,
|
|
23
|
+
issue_number: issueNumberField,
|
|
24
|
+
body: z.string().min(1),
|
|
25
|
+
});
|
|
26
|
+
const updateIssueCommentParams = z.object({
|
|
27
|
+
owner: ownerRepoField,
|
|
28
|
+
repo: ownerRepoField,
|
|
29
|
+
comment_id: commentIdField,
|
|
30
|
+
body: z.string().min(1),
|
|
31
|
+
});
|
|
32
|
+
const deleteIssueCommentParams = z.object({
|
|
33
|
+
owner: ownerRepoField,
|
|
34
|
+
repo: ownerRepoField,
|
|
35
|
+
comment_id: commentIdField,
|
|
36
|
+
});
|
|
37
|
+
const addPrReviewCommentParams = z.object({
|
|
38
|
+
owner: ownerRepoField,
|
|
39
|
+
repo: ownerRepoField,
|
|
40
|
+
pr_number: pullNumberField,
|
|
41
|
+
body: z.string().min(1),
|
|
42
|
+
commit_id: shaField,
|
|
43
|
+
path: pathField,
|
|
44
|
+
line: z.coerce.number().int().positive(),
|
|
45
|
+
side: z.enum(["LEFT", "RIGHT"]).optional(),
|
|
46
|
+
start_line: z.coerce.number().int().positive().optional(),
|
|
47
|
+
start_side: z.enum(["LEFT", "RIGHT"]).optional(),
|
|
48
|
+
});
|
|
49
|
+
const updatePrReviewCommentParams = z.object({
|
|
50
|
+
owner: ownerRepoField,
|
|
51
|
+
repo: ownerRepoField,
|
|
52
|
+
comment_id: commentIdField,
|
|
53
|
+
body: z.string().min(1),
|
|
54
|
+
});
|
|
55
|
+
const deletePrReviewCommentParams = z.object({
|
|
56
|
+
owner: ownerRepoField,
|
|
57
|
+
repo: ownerRepoField,
|
|
58
|
+
comment_id: commentIdField,
|
|
59
|
+
});
|
|
60
|
+
// ─── Envelope helpers ─────────────────────────────────────────────────────
|
|
61
|
+
function issueCommentEnvelope(c) {
|
|
62
|
+
return {
|
|
63
|
+
comment_id: c.id,
|
|
64
|
+
author: c.user?.login ?? "",
|
|
65
|
+
body_markdown: c.body ?? "",
|
|
66
|
+
url: c.html_url ?? "",
|
|
67
|
+
created_at: c.created_at ?? null,
|
|
68
|
+
updated_at: c.updated_at ?? null,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function prReviewCommentEnvelope(c) {
|
|
72
|
+
return {
|
|
73
|
+
comment_id: c.id,
|
|
74
|
+
author: c.user?.login ?? "",
|
|
75
|
+
body_markdown: c.body ?? "",
|
|
76
|
+
path: c.path ?? "",
|
|
77
|
+
line: c.line ?? null,
|
|
78
|
+
commit_id: c.commit_id ?? "",
|
|
79
|
+
diff_hunk: c.diff_hunk ?? "",
|
|
80
|
+
url: c.html_url ?? "",
|
|
81
|
+
created_at: c.created_at ?? null,
|
|
82
|
+
updated_at: c.updated_at ?? null,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ─── Action factory ───────────────────────────────────────────────────────
|
|
86
|
+
export function buildCommentsActions(_deps) {
|
|
87
|
+
return {
|
|
88
|
+
add_issue_comment: {
|
|
89
|
+
description: "Add a comment on an issue or PR conversation",
|
|
90
|
+
params: addIssueCommentParams,
|
|
91
|
+
classify: { kind: "write" },
|
|
92
|
+
handler: async (p, ctx) => {
|
|
93
|
+
const r = await ctx.sdk.addIssueComment(p.owner, p.repo, p.issue_number, {
|
|
94
|
+
body: p.body,
|
|
95
|
+
});
|
|
96
|
+
throwIfHttpError(r);
|
|
97
|
+
return issueCommentEnvelope(r.data);
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
update_issue_comment: {
|
|
101
|
+
description: "Edit an existing issue/PR-conversation comment",
|
|
102
|
+
params: updateIssueCommentParams,
|
|
103
|
+
classify: { kind: "write" },
|
|
104
|
+
handler: async (p, ctx) => {
|
|
105
|
+
const r = await ctx.sdk.updateIssueComment(p.owner, p.repo, p.comment_id, {
|
|
106
|
+
body: p.body,
|
|
107
|
+
});
|
|
108
|
+
throwIfHttpError(r);
|
|
109
|
+
return issueCommentEnvelope(r.data);
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
delete_issue_comment: {
|
|
113
|
+
description: "Delete an issue/PR-conversation comment",
|
|
114
|
+
params: deleteIssueCommentParams,
|
|
115
|
+
classify: { kind: "write", aspects: ["delete"] },
|
|
116
|
+
handler: async (p, ctx) => {
|
|
117
|
+
const r = await ctx.sdk.deleteIssueComment(p.owner, p.repo, p.comment_id);
|
|
118
|
+
throwIfHttpError(r);
|
|
119
|
+
return { comment_id: p.comment_id, deleted: true };
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
add_pr_review_comment: {
|
|
123
|
+
description: "Add an inline review comment to a PR at a specific file/line/commit",
|
|
124
|
+
params: addPrReviewCommentParams,
|
|
125
|
+
classify: { kind: "write" },
|
|
126
|
+
handler: async (p, ctx) => {
|
|
127
|
+
const body = {
|
|
128
|
+
body: p.body,
|
|
129
|
+
commit_id: p.commit_id,
|
|
130
|
+
path: p.path,
|
|
131
|
+
line: p.line,
|
|
132
|
+
};
|
|
133
|
+
if (p.side !== undefined)
|
|
134
|
+
body.side = p.side;
|
|
135
|
+
if (p.start_line !== undefined)
|
|
136
|
+
body.start_line = p.start_line;
|
|
137
|
+
if (p.start_side !== undefined)
|
|
138
|
+
body.start_side = p.start_side;
|
|
139
|
+
const r = await ctx.sdk.addPrReviewComment(p.owner, p.repo, p.pr_number, body);
|
|
140
|
+
throwIfHttpError(r);
|
|
141
|
+
return prReviewCommentEnvelope(r.data);
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
update_pr_review_comment: {
|
|
145
|
+
description: "Edit an existing PR review-inline comment",
|
|
146
|
+
params: updatePrReviewCommentParams,
|
|
147
|
+
classify: { kind: "write" },
|
|
148
|
+
handler: async (p, ctx) => {
|
|
149
|
+
const r = await ctx.sdk.updatePrReviewComment(p.owner, p.repo, p.comment_id, { body: p.body });
|
|
150
|
+
throwIfHttpError(r);
|
|
151
|
+
return prReviewCommentEnvelope(r.data);
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
delete_pr_review_comment: {
|
|
155
|
+
description: "Delete a PR review-inline comment",
|
|
156
|
+
params: deletePrReviewCommentParams,
|
|
157
|
+
classify: { kind: "write", aspects: ["delete"] },
|
|
158
|
+
handler: async (p, ctx) => {
|
|
159
|
+
const r = await ctx.sdk.deletePrReviewComment(p.owner, p.repo, p.comment_id);
|
|
160
|
+
throwIfHttpError(r);
|
|
161
|
+
return { comment_id: p.comment_id, deleted: true };
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../../src/connectors/github/actions/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../../../src/connectors/github/actions/issues.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA6DnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAqFzE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Issue action specs: get / create / update / close.
|
|
3
|
+
* Close is a dedicated action carrying the delete aspect so the toolkit
|
|
4
|
+
* policy gate's `aspects.delete` rule applies. update_issue's zod schema
|
|
5
|
+
* forbids state=closed at parse-time to route closures through close_issue.
|
|
6
|
+
*/
|
|
7
|
+
import { throwIfHttpError } from "narai-primitives/toolkit";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { ownerRepoField, issueNumberField } from "./_fields.js";
|
|
10
|
+
const getIssueParams = z.object({
|
|
11
|
+
owner: ownerRepoField,
|
|
12
|
+
repo: ownerRepoField,
|
|
13
|
+
issue_number: issueNumberField,
|
|
14
|
+
});
|
|
15
|
+
const createIssueParams = z.object({
|
|
16
|
+
owner: ownerRepoField,
|
|
17
|
+
repo: ownerRepoField,
|
|
18
|
+
title: z.string().min(1),
|
|
19
|
+
body: z.string().optional(),
|
|
20
|
+
labels: z.array(z.string()).optional(),
|
|
21
|
+
assignees: z.array(z.string()).optional(),
|
|
22
|
+
milestone: z.number().int().positive().optional(),
|
|
23
|
+
});
|
|
24
|
+
const updateIssueParams = z.object({
|
|
25
|
+
owner: ownerRepoField,
|
|
26
|
+
repo: ownerRepoField,
|
|
27
|
+
issue_number: issueNumberField,
|
|
28
|
+
title: z.string().min(1).optional(),
|
|
29
|
+
body: z.string().optional(),
|
|
30
|
+
state: z
|
|
31
|
+
.enum(["open"], {
|
|
32
|
+
errorMap: () => ({
|
|
33
|
+
message: "update_issue only accepts state=open. Use close_issue to close.",
|
|
34
|
+
}),
|
|
35
|
+
})
|
|
36
|
+
.optional(),
|
|
37
|
+
labels: z.array(z.string()).optional(),
|
|
38
|
+
assignees: z.array(z.string()).optional(),
|
|
39
|
+
});
|
|
40
|
+
const closeIssueParams = z.object({
|
|
41
|
+
owner: ownerRepoField,
|
|
42
|
+
repo: ownerRepoField,
|
|
43
|
+
issue_number: issueNumberField,
|
|
44
|
+
state_reason: z.enum(["completed", "not_planned", "duplicate"]).optional(),
|
|
45
|
+
});
|
|
46
|
+
function issueEnvelope(d) {
|
|
47
|
+
return {
|
|
48
|
+
number: d.number,
|
|
49
|
+
title: d.title,
|
|
50
|
+
state: d.state,
|
|
51
|
+
author: d.user?.login ?? "",
|
|
52
|
+
labels: (d.labels ?? []).map((l) => typeof l === "string" ? l : (l.name ?? "")),
|
|
53
|
+
url: d.html_url ?? "",
|
|
54
|
+
body_markdown: d.body ?? "",
|
|
55
|
+
updated_at: d.updated_at ?? null,
|
|
56
|
+
state_reason: d.state_reason ?? null,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function buildIssuesActions(_deps) {
|
|
60
|
+
return {
|
|
61
|
+
get_issue: {
|
|
62
|
+
description: "Fetch a single issue by number",
|
|
63
|
+
params: getIssueParams,
|
|
64
|
+
classify: { kind: "read" },
|
|
65
|
+
handler: async (p, ctx) => {
|
|
66
|
+
const r = await ctx.sdk.getIssue(p.owner, p.repo, p.issue_number);
|
|
67
|
+
throwIfHttpError(r);
|
|
68
|
+
return issueEnvelope(r.data);
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
create_issue: {
|
|
72
|
+
description: "Create a new issue",
|
|
73
|
+
params: createIssueParams,
|
|
74
|
+
classify: { kind: "write" },
|
|
75
|
+
handler: async (p, ctx) => {
|
|
76
|
+
const body = { title: p.title };
|
|
77
|
+
if (p.body !== undefined)
|
|
78
|
+
body.body = p.body;
|
|
79
|
+
if (p.labels !== undefined)
|
|
80
|
+
body.labels = p.labels;
|
|
81
|
+
if (p.assignees !== undefined)
|
|
82
|
+
body.assignees = p.assignees;
|
|
83
|
+
if (p.milestone !== undefined)
|
|
84
|
+
body.milestone = p.milestone;
|
|
85
|
+
const r = await ctx.sdk.createIssue(p.owner, p.repo, body);
|
|
86
|
+
throwIfHttpError(r);
|
|
87
|
+
return issueEnvelope(r.data);
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
update_issue: {
|
|
91
|
+
description: "Update title, body, labels, assignees, or set state=open (reopen). Closing is a separate action.",
|
|
92
|
+
params: updateIssueParams,
|
|
93
|
+
classify: { kind: "write" },
|
|
94
|
+
handler: async (p, ctx) => {
|
|
95
|
+
const body = {};
|
|
96
|
+
if (p.title !== undefined)
|
|
97
|
+
body.title = p.title;
|
|
98
|
+
if (p.body !== undefined)
|
|
99
|
+
body.body = p.body;
|
|
100
|
+
if (p.state !== undefined)
|
|
101
|
+
body.state = p.state;
|
|
102
|
+
if (p.labels !== undefined)
|
|
103
|
+
body.labels = p.labels;
|
|
104
|
+
if (p.assignees !== undefined)
|
|
105
|
+
body.assignees = p.assignees;
|
|
106
|
+
const r = await ctx.sdk.updateIssue(p.owner, p.repo, p.issue_number, body);
|
|
107
|
+
throwIfHttpError(r);
|
|
108
|
+
return issueEnvelope(r.data);
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
close_issue: {
|
|
112
|
+
description: "Close an issue (does not delete; REST has no hard-delete).",
|
|
113
|
+
params: closeIssueParams,
|
|
114
|
+
classify: { kind: "write", aspects: ["delete"] },
|
|
115
|
+
handler: async (p, ctx) => {
|
|
116
|
+
const body = {};
|
|
117
|
+
if (p.state_reason !== undefined)
|
|
118
|
+
body.state_reason = p.state_reason;
|
|
119
|
+
const r = await ctx.sdk.closeIssue(p.owner, p.repo, p.issue_number, body);
|
|
120
|
+
throwIfHttpError(r);
|
|
121
|
+
return {
|
|
122
|
+
...issueEnvelope(r.data),
|
|
123
|
+
closed: true,
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../src/connectors/github/actions/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulls.d.ts","sourceRoot":"","sources":["../../../../src/connectors/github/actions/pulls.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4EnE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CA2HvE"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull-request action specs: get / create / update / close / merge.
|
|
3
|
+
*
|
|
4
|
+
* Classification:
|
|
5
|
+
* - get_pull_request : read
|
|
6
|
+
* - create_pull_request : write (require_draft_pr forces draft=true)
|
|
7
|
+
* - update_pull_request : write (schema rejects state=closed)
|
|
8
|
+
* - close_pull_request : write + delete aspect
|
|
9
|
+
* - merge_pull_request : admin (operator opt-in via YAML)
|
|
10
|
+
*
|
|
11
|
+
* 409-on-merge: GitHub returns 409 when the head SHA changed between
|
|
12
|
+
* the caller's read and our PUT. We surface that as a VALIDATION_ERROR
|
|
13
|
+
* via a connector-local CONFLICT code (mapped in index.ts CODE_MAP).
|
|
14
|
+
*/
|
|
15
|
+
import { ConnectorError, throwIfHttpError } from "narai-primitives/toolkit";
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
import { ownerRepoField, pullNumberField, branchField, prHeadField } from "./_fields.js";
|
|
18
|
+
const getPullParams = z.object({
|
|
19
|
+
owner: ownerRepoField,
|
|
20
|
+
repo: ownerRepoField,
|
|
21
|
+
pull_number: pullNumberField,
|
|
22
|
+
});
|
|
23
|
+
const createPullParams = z.object({
|
|
24
|
+
owner: ownerRepoField,
|
|
25
|
+
repo: ownerRepoField,
|
|
26
|
+
title: z.string().min(1),
|
|
27
|
+
head: prHeadField,
|
|
28
|
+
base: branchField,
|
|
29
|
+
body: z.string().optional(),
|
|
30
|
+
draft: z.boolean().default(false),
|
|
31
|
+
maintainer_can_modify: z.boolean().optional(),
|
|
32
|
+
});
|
|
33
|
+
const updatePullParams = z.object({
|
|
34
|
+
owner: ownerRepoField,
|
|
35
|
+
repo: ownerRepoField,
|
|
36
|
+
pull_number: pullNumberField,
|
|
37
|
+
title: z.string().min(1).optional(),
|
|
38
|
+
body: z.string().optional(),
|
|
39
|
+
base: branchField.optional(),
|
|
40
|
+
maintainer_can_modify: z.boolean().optional(),
|
|
41
|
+
state: z
|
|
42
|
+
.enum(["open"], {
|
|
43
|
+
errorMap: () => ({
|
|
44
|
+
message: "update_pull_request only accepts state=open. Use close_pull_request to close.",
|
|
45
|
+
}),
|
|
46
|
+
})
|
|
47
|
+
.optional(),
|
|
48
|
+
});
|
|
49
|
+
const closePullParams = z.object({
|
|
50
|
+
owner: ownerRepoField,
|
|
51
|
+
repo: ownerRepoField,
|
|
52
|
+
pull_number: pullNumberField,
|
|
53
|
+
});
|
|
54
|
+
const mergeMethodField = z.enum(["merge", "squash", "rebase"]);
|
|
55
|
+
const mergePullParams = z.object({
|
|
56
|
+
owner: ownerRepoField,
|
|
57
|
+
repo: ownerRepoField,
|
|
58
|
+
pull_number: pullNumberField,
|
|
59
|
+
merge_method: mergeMethodField.default("merge"),
|
|
60
|
+
commit_title: z.string().optional(),
|
|
61
|
+
commit_message: z.string().optional(),
|
|
62
|
+
sha: z.string().optional(),
|
|
63
|
+
});
|
|
64
|
+
function pullEnvelope(d) {
|
|
65
|
+
return {
|
|
66
|
+
number: d.number,
|
|
67
|
+
title: d.title,
|
|
68
|
+
state: d.state,
|
|
69
|
+
draft: d.draft ?? false,
|
|
70
|
+
author: d.user?.login ?? "",
|
|
71
|
+
base_ref: d.base?.ref ?? "",
|
|
72
|
+
head_ref: d.head?.ref ?? "",
|
|
73
|
+
base_sha: d.base?.sha ?? "",
|
|
74
|
+
head_sha: d.head?.sha ?? "",
|
|
75
|
+
url: d.html_url ?? "",
|
|
76
|
+
body_markdown: d.body ?? "",
|
|
77
|
+
merged: d.merged ?? false,
|
|
78
|
+
mergeable: d.mergeable ?? null,
|
|
79
|
+
updated_at: d.updated_at ?? null,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function buildPullsActions(deps) {
|
|
83
|
+
return {
|
|
84
|
+
get_pull_request: {
|
|
85
|
+
description: "Fetch a single pull request by number",
|
|
86
|
+
params: getPullParams,
|
|
87
|
+
classify: { kind: "read" },
|
|
88
|
+
handler: async (p, ctx) => {
|
|
89
|
+
const r = await ctx.sdk.getPull(p.owner, p.repo, p.pull_number);
|
|
90
|
+
throwIfHttpError(r);
|
|
91
|
+
return pullEnvelope(r.data);
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
create_pull_request: {
|
|
95
|
+
description: "Open a new pull request. Honors the require_draft_pr config knob.",
|
|
96
|
+
params: createPullParams,
|
|
97
|
+
classify: { kind: "write" },
|
|
98
|
+
handler: async (p, ctx) => {
|
|
99
|
+
const requestedDraft = p.draft;
|
|
100
|
+
const draftToUse = deps.behavior.requireDraftPr ? true : requestedDraft;
|
|
101
|
+
const body = {
|
|
102
|
+
title: p.title,
|
|
103
|
+
head: p.head,
|
|
104
|
+
base: p.base,
|
|
105
|
+
draft: draftToUse,
|
|
106
|
+
};
|
|
107
|
+
if (p.body !== undefined)
|
|
108
|
+
body.body = p.body;
|
|
109
|
+
if (p.maintainer_can_modify !== undefined)
|
|
110
|
+
body.maintainer_can_modify = p.maintainer_can_modify;
|
|
111
|
+
const r = await ctx.sdk.createPull(p.owner, p.repo, body);
|
|
112
|
+
throwIfHttpError(r);
|
|
113
|
+
return {
|
|
114
|
+
...pullEnvelope(r.data),
|
|
115
|
+
draft_forced_by_config: deps.behavior.requireDraftPr && !requestedDraft,
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
update_pull_request: {
|
|
120
|
+
description: "Update title, body, base, or set state=open (reopen). Closing is a separate action.",
|
|
121
|
+
params: updatePullParams,
|
|
122
|
+
classify: { kind: "write" },
|
|
123
|
+
handler: async (p, ctx) => {
|
|
124
|
+
const body = {};
|
|
125
|
+
if (p.title !== undefined)
|
|
126
|
+
body.title = p.title;
|
|
127
|
+
if (p.body !== undefined)
|
|
128
|
+
body.body = p.body;
|
|
129
|
+
if (p.state !== undefined)
|
|
130
|
+
body.state = p.state;
|
|
131
|
+
if (p.base !== undefined)
|
|
132
|
+
body.base = p.base;
|
|
133
|
+
if (p.maintainer_can_modify !== undefined)
|
|
134
|
+
body.maintainer_can_modify = p.maintainer_can_modify;
|
|
135
|
+
const r = await ctx.sdk.updatePull(p.owner, p.repo, p.pull_number, body);
|
|
136
|
+
throwIfHttpError(r);
|
|
137
|
+
return pullEnvelope(r.data);
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
close_pull_request: {
|
|
141
|
+
description: "Close a pull request (does not delete; GitHub has no REST hard-delete).",
|
|
142
|
+
params: closePullParams,
|
|
143
|
+
classify: { kind: "write", aspects: ["delete"] },
|
|
144
|
+
handler: async (p, ctx) => {
|
|
145
|
+
const r = await ctx.sdk.closePull(p.owner, p.repo, p.pull_number);
|
|
146
|
+
throwIfHttpError(r);
|
|
147
|
+
return {
|
|
148
|
+
...pullEnvelope(r.data),
|
|
149
|
+
closed: true,
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
merge_pull_request: {
|
|
154
|
+
description: "Merge a pull request. Admin-classified — operator must opt in via ~/.github-agent/config.yaml.",
|
|
155
|
+
params: mergePullParams,
|
|
156
|
+
classify: { kind: "admin" },
|
|
157
|
+
handler: async (p, ctx) => {
|
|
158
|
+
const body = { merge_method: p.merge_method };
|
|
159
|
+
if (p.commit_title !== undefined)
|
|
160
|
+
body.commit_title = p.commit_title;
|
|
161
|
+
if (p.commit_message !== undefined)
|
|
162
|
+
body.commit_message = p.commit_message;
|
|
163
|
+
if (p.sha !== undefined)
|
|
164
|
+
body.sha = p.sha;
|
|
165
|
+
const r = await ctx.sdk.mergePull(p.owner, p.repo, p.pull_number, body);
|
|
166
|
+
if (!r.ok && r.status === 409) {
|
|
167
|
+
throw new ConnectorError("CONFLICT", `merge_pull_request: head SHA changed mid-merge (${r.message})`, false);
|
|
168
|
+
}
|
|
169
|
+
throwIfHttpError(r);
|
|
170
|
+
return {
|
|
171
|
+
owner: p.owner,
|
|
172
|
+
repo: p.repo,
|
|
173
|
+
pull_number: p.pull_number,
|
|
174
|
+
merged: r.data.merged,
|
|
175
|
+
merge_sha: r.data.sha,
|
|
176
|
+
message: r.data.message,
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=pulls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulls.js","sourceRoot":"","sources":["../../../../src/connectors/github/actions/pulls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reads.d.ts","sourceRoot":"","sources":["../../../../src/connectors/github/actions/reads.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgFnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAqSvE"}
|