narai-primitives 2.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +64 -0
- package/dist/config/bootstrap.d.ts +28 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +80 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load.d.ts +37 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +99 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/resolve.d.ts +23 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resolve.js +198 -0
- package/dist/config/resolve.js.map +1 -0
- package/dist/config/secrets.d.ts +20 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +43 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/config/types.d.ts +104 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +11 -0
- package/dist/config/types.js.map +1 -0
- package/dist/connectors/aws/cli.d.ts +3 -0
- package/dist/connectors/aws/cli.d.ts.map +1 -0
- package/dist/connectors/aws/cli.js +27 -0
- package/dist/connectors/aws/cli.js.map +1 -0
- package/dist/connectors/aws/index.d.ts +27 -0
- package/dist/connectors/aws/index.d.ts.map +1 -0
- package/dist/connectors/aws/index.js +281 -0
- package/dist/connectors/aws/index.js.map +1 -0
- package/dist/connectors/aws/lib/aws_client.d.ts +140 -0
- package/dist/connectors/aws/lib/aws_client.d.ts.map +1 -0
- package/dist/connectors/aws/lib/aws_client.js +196 -0
- package/dist/connectors/aws/lib/aws_client.js.map +1 -0
- package/dist/connectors/aws/lib/aws_error.d.ts +10 -0
- package/dist/connectors/aws/lib/aws_error.d.ts.map +1 -0
- package/dist/connectors/aws/lib/aws_error.js +15 -0
- package/dist/connectors/aws/lib/aws_error.js.map +1 -0
- package/dist/connectors/confluence/cli.d.ts +3 -0
- package/dist/connectors/confluence/cli.d.ts.map +1 -0
- package/dist/connectors/confluence/cli.js +24 -0
- package/dist/connectors/confluence/cli.js.map +1 -0
- package/dist/connectors/confluence/index.d.ts +15 -0
- package/dist/connectors/confluence/index.d.ts.map +1 -0
- package/dist/connectors/confluence/index.js +295 -0
- package/dist/connectors/confluence/index.js.map +1 -0
- package/dist/connectors/confluence/lib/confluence_client.d.ts +135 -0
- package/dist/connectors/confluence/lib/confluence_client.d.ts.map +1 -0
- package/dist/connectors/confluence/lib/confluence_client.js +329 -0
- package/dist/connectors/confluence/lib/confluence_client.js.map +1 -0
- package/dist/connectors/confluence/lib/confluence_error.d.ts +13 -0
- package/dist/connectors/confluence/lib/confluence_error.d.ts.map +1 -0
- package/dist/connectors/confluence/lib/confluence_error.js +19 -0
- package/dist/connectors/confluence/lib/confluence_error.js.map +1 -0
- package/dist/connectors/db/cli.d.ts +5 -0
- package/dist/connectors/db/cli.d.ts.map +1 -0
- package/dist/connectors/db/cli.js +34 -0
- package/dist/connectors/db/cli.js.map +1 -0
- package/dist/connectors/db/config.d.ts +18 -0
- package/dist/connectors/db/config.d.ts.map +1 -0
- package/dist/connectors/db/config.js +142 -0
- package/dist/connectors/db/config.js.map +1 -0
- package/dist/connectors/db/connector.d.ts +31 -0
- package/dist/connectors/db/connector.d.ts.map +1 -0
- package/dist/connectors/db/connector.js +175 -0
- package/dist/connectors/db/connector.js.map +1 -0
- package/dist/connectors/db/dispatcher.d.ts +36 -0
- package/dist/connectors/db/dispatcher.d.ts.map +1 -0
- package/dist/connectors/db/dispatcher.js +597 -0
- package/dist/connectors/db/dispatcher.js.map +1 -0
- package/dist/connectors/db/index.d.ts +22 -0
- package/dist/connectors/db/index.d.ts.map +1 -0
- package/dist/connectors/db/index.js +26 -0
- package/dist/connectors/db/index.js.map +1 -0
- package/dist/connectors/db/lib/audit.d.ts +32 -0
- package/dist/connectors/db/lib/audit.d.ts.map +1 -0
- package/dist/connectors/db/lib/audit.js +130 -0
- package/dist/connectors/db/lib/audit.js.map +1 -0
- package/dist/connectors/db/lib/connection.d.ts +61 -0
- package/dist/connectors/db/lib/connection.d.ts.map +1 -0
- package/dist/connectors/db/lib/connection.js +326 -0
- package/dist/connectors/db/lib/connection.js.map +1 -0
- package/dist/connectors/db/lib/credentials.d.ts +60 -0
- package/dist/connectors/db/lib/credentials.d.ts.map +1 -0
- package/dist/connectors/db/lib/credentials.js +117 -0
- package/dist/connectors/db/lib/credentials.js.map +1 -0
- package/dist/connectors/db/lib/drivers/base.d.ts +83 -0
- package/dist/connectors/db/lib/drivers/base.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/base.js +46 -0
- package/dist/connectors/db/lib/drivers/base.js.map +1 -0
- package/dist/connectors/db/lib/drivers/dynamodb.d.ts +108 -0
- package/dist/connectors/db/lib/drivers/dynamodb.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/dynamodb.js +468 -0
- package/dist/connectors/db/lib/drivers/dynamodb.js.map +1 -0
- package/dist/connectors/db/lib/drivers/mongodb.d.ts +60 -0
- package/dist/connectors/db/lib/drivers/mongodb.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/mongodb.js +371 -0
- package/dist/connectors/db/lib/drivers/mongodb.js.map +1 -0
- package/dist/connectors/db/lib/drivers/mysql.d.ts +45 -0
- package/dist/connectors/db/lib/drivers/mysql.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/mysql.js +265 -0
- package/dist/connectors/db/lib/drivers/mysql.js.map +1 -0
- package/dist/connectors/db/lib/drivers/oracle.d.ts +53 -0
- package/dist/connectors/db/lib/drivers/oracle.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/oracle.js +350 -0
- package/dist/connectors/db/lib/drivers/oracle.js.map +1 -0
- package/dist/connectors/db/lib/drivers/postgresql.d.ts +65 -0
- package/dist/connectors/db/lib/drivers/postgresql.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/postgresql.js +294 -0
- package/dist/connectors/db/lib/drivers/postgresql.js.map +1 -0
- package/dist/connectors/db/lib/drivers/register.d.ts +16 -0
- package/dist/connectors/db/lib/drivers/register.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/register.js +111 -0
- package/dist/connectors/db/lib/drivers/register.js.map +1 -0
- package/dist/connectors/db/lib/drivers/sqlite.d.ts +11 -0
- package/dist/connectors/db/lib/drivers/sqlite.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/sqlite.js +147 -0
- package/dist/connectors/db/lib/drivers/sqlite.js.map +1 -0
- package/dist/connectors/db/lib/drivers/sqlserver.d.ts +58 -0
- package/dist/connectors/db/lib/drivers/sqlserver.d.ts.map +1 -0
- package/dist/connectors/db/lib/drivers/sqlserver.js +274 -0
- package/dist/connectors/db/lib/drivers/sqlserver.js.map +1 -0
- package/dist/connectors/db/lib/environments.d.ts +68 -0
- package/dist/connectors/db/lib/environments.d.ts.map +1 -0
- package/dist/connectors/db/lib/environments.js +53 -0
- package/dist/connectors/db/lib/environments.js.map +1 -0
- package/dist/connectors/db/lib/index.d.ts +28 -0
- package/dist/connectors/db/lib/index.d.ts.map +1 -0
- package/dist/connectors/db/lib/index.js +30 -0
- package/dist/connectors/db/lib/index.js.map +1 -0
- package/dist/connectors/db/lib/plugin_config.d.ts +64 -0
- package/dist/connectors/db/lib/plugin_config.d.ts.map +1 -0
- package/dist/connectors/db/lib/plugin_config.js +287 -0
- package/dist/connectors/db/lib/plugin_config.js.map +1 -0
- package/dist/connectors/db/lib/policy.d.ts +162 -0
- package/dist/connectors/db/lib/policy.d.ts.map +1 -0
- package/dist/connectors/db/lib/policy.js +581 -0
- package/dist/connectors/db/lib/policy.js.map +1 -0
- package/dist/connectors/db/lib/query.d.ts +22 -0
- package/dist/connectors/db/lib/query.d.ts.map +1 -0
- package/dist/connectors/db/lib/query.js +93 -0
- package/dist/connectors/db/lib/query.js.map +1 -0
- package/dist/connectors/db/lib/schema.d.ts +13 -0
- package/dist/connectors/db/lib/schema.d.ts.map +1 -0
- package/dist/connectors/db/lib/schema.js +80 -0
- package/dist/connectors/db/lib/schema.js.map +1 -0
- package/dist/connectors/gcp/cli.d.ts +3 -0
- package/dist/connectors/gcp/cli.d.ts.map +1 -0
- package/dist/connectors/gcp/cli.js +24 -0
- package/dist/connectors/gcp/cli.js.map +1 -0
- package/dist/connectors/gcp/index.d.ts +24 -0
- package/dist/connectors/gcp/index.d.ts.map +1 -0
- package/dist/connectors/gcp/index.js +205 -0
- package/dist/connectors/gcp/index.js.map +1 -0
- package/dist/connectors/gcp/lib/gcp_client.d.ts +88 -0
- package/dist/connectors/gcp/lib/gcp_client.d.ts.map +1 -0
- package/dist/connectors/gcp/lib/gcp_client.js +434 -0
- package/dist/connectors/gcp/lib/gcp_client.js.map +1 -0
- package/dist/connectors/gcp/lib/gcp_error.d.ts +10 -0
- package/dist/connectors/gcp/lib/gcp_error.d.ts.map +1 -0
- package/dist/connectors/gcp/lib/gcp_error.js +15 -0
- package/dist/connectors/gcp/lib/gcp_error.js.map +1 -0
- package/dist/connectors/github/cli.d.ts +3 -0
- package/dist/connectors/github/cli.d.ts.map +1 -0
- package/dist/connectors/github/cli.js +23 -0
- package/dist/connectors/github/cli.js.map +1 -0
- package/dist/connectors/github/index.d.ts +23 -0
- package/dist/connectors/github/index.d.ts.map +1 -0
- package/dist/connectors/github/index.js +462 -0
- package/dist/connectors/github/index.js.map +1 -0
- package/dist/connectors/github/lib/github_client.d.ts +181 -0
- package/dist/connectors/github/lib/github_client.d.ts.map +1 -0
- package/dist/connectors/github/lib/github_client.js +383 -0
- package/dist/connectors/github/lib/github_client.js.map +1 -0
- package/dist/connectors/github/lib/github_error.d.ts +11 -0
- package/dist/connectors/github/lib/github_error.d.ts.map +1 -0
- package/dist/connectors/github/lib/github_error.js +17 -0
- package/dist/connectors/github/lib/github_error.js.map +1 -0
- package/dist/connectors/jira/cli.d.ts +3 -0
- package/dist/connectors/jira/cli.d.ts.map +1 -0
- package/dist/connectors/jira/cli.js +24 -0
- package/dist/connectors/jira/cli.js.map +1 -0
- package/dist/connectors/jira/index.d.ts +13 -0
- package/dist/connectors/jira/index.d.ts.map +1 -0
- package/dist/connectors/jira/index.js +287 -0
- package/dist/connectors/jira/index.js.map +1 -0
- package/dist/connectors/jira/lib/adf.d.ts +25 -0
- package/dist/connectors/jira/lib/adf.d.ts.map +1 -0
- package/dist/connectors/jira/lib/adf.js +105 -0
- package/dist/connectors/jira/lib/adf.js.map +1 -0
- package/dist/connectors/jira/lib/jira_client.d.ts +143 -0
- package/dist/connectors/jira/lib/jira_client.d.ts.map +1 -0
- package/dist/connectors/jira/lib/jira_client.js +355 -0
- package/dist/connectors/jira/lib/jira_client.js.map +1 -0
- package/dist/connectors/jira/lib/jira_error.d.ts +11 -0
- package/dist/connectors/jira/lib/jira_error.d.ts.map +1 -0
- package/dist/connectors/jira/lib/jira_error.js +17 -0
- package/dist/connectors/jira/lib/jira_error.js.map +1 -0
- package/dist/connectors/notion/cli.d.ts +3 -0
- package/dist/connectors/notion/cli.d.ts.map +1 -0
- package/dist/connectors/notion/cli.js +22 -0
- package/dist/connectors/notion/cli.js.map +1 -0
- package/dist/connectors/notion/index.d.ts +20 -0
- package/dist/connectors/notion/index.d.ts.map +1 -0
- package/dist/connectors/notion/index.js +317 -0
- package/dist/connectors/notion/index.js.map +1 -0
- package/dist/connectors/notion/lib/notion_client.d.ts +117 -0
- package/dist/connectors/notion/lib/notion_client.d.ts.map +1 -0
- package/dist/connectors/notion/lib/notion_client.js +377 -0
- package/dist/connectors/notion/lib/notion_client.js.map +1 -0
- package/dist/connectors/notion/lib/notion_error.d.ts +12 -0
- package/dist/connectors/notion/lib/notion_error.d.ts.map +1 -0
- package/dist/connectors/notion/lib/notion_error.js +18 -0
- package/dist/connectors/notion/lib/notion_error.js.map +1 -0
- package/dist/hub/cli.d.ts +4 -0
- package/dist/hub/cli.d.ts.map +1 -0
- package/dist/hub/cli.js +93 -0
- package/dist/hub/cli.js.map +1 -0
- package/dist/hub/dispatch.d.ts +33 -0
- package/dist/hub/dispatch.d.ts.map +1 -0
- package/dist/hub/dispatch.js +297 -0
- package/dist/hub/dispatch.js.map +1 -0
- package/dist/hub/index.d.ts +9 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +215 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/plan.d.ts +24 -0
- package/dist/hub/plan.d.ts.map +1 -0
- package/dist/hub/plan.js +103 -0
- package/dist/hub/plan.js.map +1 -0
- package/dist/hub/types.d.ts +65 -0
- package/dist/hub/types.d.ts.map +1 -0
- package/dist/hub/types.js +3 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/toolkit/_optional.d.ts +14 -0
- package/dist/toolkit/_optional.d.ts.map +1 -0
- package/dist/toolkit/_optional.js +96 -0
- package/dist/toolkit/_optional.js.map +1 -0
- package/dist/toolkit/agent_cli.d.ts +33 -0
- package/dist/toolkit/agent_cli.d.ts.map +1 -0
- package/dist/toolkit/agent_cli.js +62 -0
- package/dist/toolkit/agent_cli.js.map +1 -0
- package/dist/toolkit/agent_resolver.d.ts +46 -0
- package/dist/toolkit/agent_resolver.d.ts.map +1 -0
- package/dist/toolkit/agent_resolver.js +78 -0
- package/dist/toolkit/agent_resolver.js.map +1 -0
- package/dist/toolkit/audit/events.d.ts +45 -0
- package/dist/toolkit/audit/events.d.ts.map +1 -0
- package/dist/toolkit/audit/events.js +8 -0
- package/dist/toolkit/audit/events.js.map +1 -0
- package/dist/toolkit/audit/writer.d.ts +16 -0
- package/dist/toolkit/audit/writer.d.ts.map +1 -0
- package/dist/toolkit/audit/writer.js +73 -0
- package/dist/toolkit/audit/writer.js.map +1 -0
- package/dist/toolkit/cli/usage-report.d.ts +3 -0
- package/dist/toolkit/cli/usage-report.d.ts.map +1 -0
- package/dist/toolkit/cli/usage-report.js +76 -0
- package/dist/toolkit/cli/usage-report.js.map +1 -0
- package/dist/toolkit/connector.d.ts +142 -0
- package/dist/toolkit/connector.d.ts.map +1 -0
- package/dist/toolkit/connector.js +593 -0
- package/dist/toolkit/connector.js.map +1 -0
- package/dist/toolkit/extract_binary.d.ts +45 -0
- package/dist/toolkit/extract_binary.d.ts.map +1 -0
- package/dist/toolkit/extract_binary.js +342 -0
- package/dist/toolkit/extract_binary.js.map +1 -0
- package/dist/toolkit/extract_multimodal.d.ts +22 -0
- package/dist/toolkit/extract_multimodal.d.ts.map +1 -0
- package/dist/toolkit/extract_multimodal.js +209 -0
- package/dist/toolkit/extract_multimodal.js.map +1 -0
- package/dist/toolkit/fetch_attachment.d.ts +21 -0
- package/dist/toolkit/fetch_attachment.d.ts.map +1 -0
- package/dist/toolkit/fetch_attachment.js +169 -0
- package/dist/toolkit/fetch_attachment.js.map +1 -0
- package/dist/toolkit/fetch_helper.d.ts +47 -0
- package/dist/toolkit/fetch_helper.d.ts.map +1 -0
- package/dist/toolkit/fetch_helper.js +124 -0
- package/dist/toolkit/fetch_helper.js.map +1 -0
- package/dist/toolkit/guardrail.d.ts +63 -0
- package/dist/toolkit/guardrail.d.ts.map +1 -0
- package/dist/toolkit/guardrail.js +166 -0
- package/dist/toolkit/guardrail.js.map +1 -0
- package/dist/toolkit/hardship/curate.d.ts +47 -0
- package/dist/toolkit/hardship/curate.d.ts.map +1 -0
- package/dist/toolkit/hardship/curate.js +113 -0
- package/dist/toolkit/hardship/curate.js.map +1 -0
- package/dist/toolkit/hardship/patterns.d.ts +32 -0
- package/dist/toolkit/hardship/patterns.d.ts.map +1 -0
- package/dist/toolkit/hardship/patterns.js +98 -0
- package/dist/toolkit/hardship/patterns.js.map +1 -0
- package/dist/toolkit/hardship/preamble.d.ts +13 -0
- package/dist/toolkit/hardship/preamble.d.ts.map +1 -0
- package/dist/toolkit/hardship/preamble.js +47 -0
- package/dist/toolkit/hardship/preamble.js.map +1 -0
- package/dist/toolkit/hardship/read.d.ts +34 -0
- package/dist/toolkit/hardship/read.d.ts.map +1 -0
- package/dist/toolkit/hardship/read.js +116 -0
- package/dist/toolkit/hardship/read.js.map +1 -0
- package/dist/toolkit/hardship/record.d.ts +43 -0
- package/dist/toolkit/hardship/record.d.ts.map +1 -0
- package/dist/toolkit/hardship/record.js +74 -0
- package/dist/toolkit/hardship/record.js.map +1 -0
- package/dist/toolkit/hardship/scope.d.ts +20 -0
- package/dist/toolkit/hardship/scope.d.ts.map +1 -0
- package/dist/toolkit/hardship/scope.js +56 -0
- package/dist/toolkit/hardship/scope.js.map +1 -0
- package/dist/toolkit/index.d.ts +42 -0
- package/dist/toolkit/index.d.ts.map +1 -0
- package/dist/toolkit/index.js +51 -0
- package/dist/toolkit/index.js.map +1 -0
- package/dist/toolkit/plugin/curate-cmd.d.ts +22 -0
- package/dist/toolkit/plugin/curate-cmd.d.ts.map +1 -0
- package/dist/toolkit/plugin/curate-cmd.js +72 -0
- package/dist/toolkit/plugin/curate-cmd.js.map +1 -0
- package/dist/toolkit/plugin/prefs.d.ts +15 -0
- package/dist/toolkit/plugin/prefs.d.ts.map +1 -0
- package/dist/toolkit/plugin/prefs.js +78 -0
- package/dist/toolkit/plugin/prefs.js.map +1 -0
- package/dist/toolkit/plugin/reminder.d.ts +28 -0
- package/dist/toolkit/plugin/reminder.d.ts.map +1 -0
- package/dist/toolkit/plugin/reminder.js +103 -0
- package/dist/toolkit/plugin/reminder.js.map +1 -0
- package/dist/toolkit/policy/approval.d.ts +24 -0
- package/dist/toolkit/policy/approval.d.ts.map +1 -0
- package/dist/toolkit/policy/approval.js +56 -0
- package/dist/toolkit/policy/approval.js.map +1 -0
- package/dist/toolkit/policy/config.d.ts +38 -0
- package/dist/toolkit/policy/config.d.ts.map +1 -0
- package/dist/toolkit/policy/config.js +172 -0
- package/dist/toolkit/policy/config.js.map +1 -0
- package/dist/toolkit/policy/gate.d.ts +28 -0
- package/dist/toolkit/policy/gate.d.ts.map +1 -0
- package/dist/toolkit/policy/gate.js +126 -0
- package/dist/toolkit/policy/gate.js.map +1 -0
- package/dist/toolkit/policy/types.d.ts +106 -0
- package/dist/toolkit/policy/types.d.ts.map +1 -0
- package/dist/toolkit/policy/types.js +22 -0
- package/dist/toolkit/policy/types.js.map +1 -0
- package/dist/toolkit/security_check.d.ts +15 -0
- package/dist/toolkit/security_check.d.ts.map +1 -0
- package/dist/toolkit/security_check.js +109 -0
- package/dist/toolkit/security_check.js.map +1 -0
- package/dist/toolkit/usage/aggregate-cross-session.d.ts +36 -0
- package/dist/toolkit/usage/aggregate-cross-session.d.ts.map +1 -0
- package/dist/toolkit/usage/aggregate-cross-session.js +142 -0
- package/dist/toolkit/usage/aggregate-cross-session.js.map +1 -0
- package/dist/toolkit/usage/aggregate.d.ts +4 -0
- package/dist/toolkit/usage/aggregate.d.ts.map +1 -0
- package/dist/toolkit/usage/aggregate.js +105 -0
- package/dist/toolkit/usage/aggregate.js.map +1 -0
- package/dist/toolkit/usage/index.d.ts +11 -0
- package/dist/toolkit/usage/index.d.ts.map +1 -0
- package/dist/toolkit/usage/index.js +7 -0
- package/dist/toolkit/usage/index.js.map +1 -0
- package/dist/toolkit/usage/parse.d.ts +5 -0
- package/dist/toolkit/usage/parse.d.ts.map +1 -0
- package/dist/toolkit/usage/parse.js +19 -0
- package/dist/toolkit/usage/parse.js.map +1 -0
- package/dist/toolkit/usage/record.d.ts +8 -0
- package/dist/toolkit/usage/record.d.ts.map +1 -0
- package/dist/toolkit/usage/record.js +18 -0
- package/dist/toolkit/usage/record.js.map +1 -0
- package/dist/toolkit/usage/retention.d.ts +6 -0
- package/dist/toolkit/usage/retention.d.ts.map +1 -0
- package/dist/toolkit/usage/retention.js +71 -0
- package/dist/toolkit/usage/retention.js.map +1 -0
- package/dist/toolkit/usage/tokenize.d.ts +11 -0
- package/dist/toolkit/usage/tokenize.d.ts.map +1 -0
- package/dist/toolkit/usage/tokenize.js +24 -0
- package/dist/toolkit/usage/tokenize.js.map +1 -0
- package/dist/toolkit/usage/types.d.ts +34 -0
- package/dist/toolkit/usage/types.d.ts.map +1 -0
- package/dist/toolkit/usage/types.js +2 -0
- package/dist/toolkit/usage/types.js.map +1 -0
- package/package.json +124 -0
- package/plugin-hooks/session-summary.mjs +138 -0
- package/plugin-hooks/stale-summarize.mjs +70 -0
- package/plugin-hooks/usage-record.mjs +112 -0
- package/plugins/aws-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/aws-agent/README.md +46 -0
- package/plugins/aws-agent/bin/aws-agent +22 -0
- package/plugins/aws-agent/commands/aws-agent.md +6 -0
- package/plugins/aws-agent/hooks/hooks.json +49 -0
- package/plugins/aws-agent/hooks/reminder.mjs +16 -0
- package/plugins/aws-agent/package.json +9 -0
- package/plugins/aws-agent/skills/aws-agent/SKILL.md +70 -0
- package/plugins/confluence-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/confluence-agent/README.md +15 -0
- package/plugins/confluence-agent/bin/confluence-agent +17 -0
- package/plugins/confluence-agent/commands/confluence-agent.md +6 -0
- package/plugins/confluence-agent/hooks/hooks.json +49 -0
- package/plugins/confluence-agent/hooks/reminder.mjs +25 -0
- package/plugins/confluence-agent/package.json +8 -0
- package/plugins/confluence-agent/skills/confluence-agent/SKILL.md +40 -0
- package/plugins/db-agent/.claude-plugin/plugin.json +20 -0
- package/plugins/db-agent/README.md +13 -0
- package/plugins/db-agent/bin/db-agent +17 -0
- package/plugins/db-agent/commands/db-agent.md +6 -0
- package/plugins/db-agent/hooks/db-guard.mjs +110 -0
- package/plugins/db-agent/hooks/guardrails.json +26 -0
- package/plugins/db-agent/hooks/hooks.json +61 -0
- package/plugins/db-agent/hooks/reminder.mjs +16 -0
- package/plugins/db-agent/package.json +8 -0
- package/plugins/db-agent/skills/db-agent/SKILL.md +50 -0
- package/plugins/gcp-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/gcp-agent/README.md +31 -0
- package/plugins/gcp-agent/bin/gcp-agent +18 -0
- package/plugins/gcp-agent/commands/gcp-agent.md +6 -0
- package/plugins/gcp-agent/hooks/hooks.json +49 -0
- package/plugins/gcp-agent/hooks/reminder.mjs +16 -0
- package/plugins/gcp-agent/package.json +9 -0
- package/plugins/gcp-agent/skills/gcp-agent/SKILL.md +54 -0
- package/plugins/github-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/github-agent/README.md +13 -0
- package/plugins/github-agent/bin/github-agent +17 -0
- package/plugins/github-agent/commands/github-agent.md +6 -0
- package/plugins/github-agent/hooks/hooks.json +49 -0
- package/plugins/github-agent/hooks/reminder.mjs +16 -0
- package/plugins/github-agent/package.json +8 -0
- package/plugins/github-agent/skills/github-agent/SKILL.md +41 -0
- package/plugins/jira-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/jira-agent/README.md +15 -0
- package/plugins/jira-agent/bin/jira-agent +17 -0
- package/plugins/jira-agent/commands/jira-agent.md +6 -0
- package/plugins/jira-agent/hooks/hooks.json +49 -0
- package/plugins/jira-agent/hooks/reminder.mjs +16 -0
- package/plugins/jira-agent/package.json +8 -0
- package/plugins/jira-agent/skills/jira-agent/SKILL.md +37 -0
- package/plugins/notion-agent/.claude-plugin/plugin.json +6 -0
- package/plugins/notion-agent/README.md +23 -0
- package/plugins/notion-agent/bin/notion-agent +17 -0
- package/plugins/notion-agent/commands/notion-agent.md +6 -0
- package/plugins/notion-agent/hooks/hooks.json +49 -0
- package/plugins/notion-agent/hooks/reminder.mjs +17 -0
- package/plugins/notion-agent/package.json +8 -0
- package/plugins/notion-agent/skills/notion-agent/SKILL.md +48 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plugin_config.ts — db-agent plugin-level configuration.
|
|
3
|
+
*
|
|
4
|
+
* V2.0: configuration is loaded by `@narai/connector-config` from
|
|
5
|
+
* `~/.connectors/config.yaml` and `./.connectors/config.yaml`. The CLI
|
|
6
|
+
* builds a `PluginConfig` from the resolved `db` connector's slice. The
|
|
7
|
+
* `loadPluginConfig({ explicitPath })` API still parses a YAML file
|
|
8
|
+
* directly when `--config-path` is supplied — it now expects the new
|
|
9
|
+
* vocab.
|
|
10
|
+
*
|
|
11
|
+
* Shape:
|
|
12
|
+
* policy: global default rules, one of allow/present/escalate/deny per op
|
|
13
|
+
* servers: named DB servers, each with a driver + driver-specific fields,
|
|
14
|
+
* and optional per-server `policy` override that merges on top
|
|
15
|
+
* of the global.
|
|
16
|
+
* audit: optional JSONL audit trail (path + enabled flag)
|
|
17
|
+
*
|
|
18
|
+
* Safety floor: `admin` and `privilege` may be downgraded to `present` /
|
|
19
|
+
* `escalate` / `deny` but never `allow`. Validation fails at config-load.
|
|
20
|
+
*/
|
|
21
|
+
import * as fs from "node:fs";
|
|
22
|
+
import * as yaml from "js-yaml";
|
|
23
|
+
const _ASSERT_POLICYRULES_KEYS = true;
|
|
24
|
+
void _ASSERT_POLICYRULES_KEYS;
|
|
25
|
+
export const DEFAULT_POLICY = {
|
|
26
|
+
read: "allow",
|
|
27
|
+
write: "escalate",
|
|
28
|
+
delete: "present",
|
|
29
|
+
admin: "present",
|
|
30
|
+
privilege: "deny",
|
|
31
|
+
unbounded_select: "escalate",
|
|
32
|
+
};
|
|
33
|
+
const VALID_UNBOUNDED_MODES = new Set([
|
|
34
|
+
"escalate",
|
|
35
|
+
"allow",
|
|
36
|
+
]);
|
|
37
|
+
const VALID_RULES = new Set([
|
|
38
|
+
"allow",
|
|
39
|
+
"present",
|
|
40
|
+
"escalate",
|
|
41
|
+
"deny",
|
|
42
|
+
]);
|
|
43
|
+
function isPlainObject(v) {
|
|
44
|
+
return (typeof v === "object" &&
|
|
45
|
+
v !== null &&
|
|
46
|
+
!Array.isArray(v) &&
|
|
47
|
+
v.constructor === Object);
|
|
48
|
+
}
|
|
49
|
+
function readYaml(filePath) {
|
|
50
|
+
const raw = fs.readFileSync(filePath, { encoding: "utf-8" });
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = yaml.load(raw);
|
|
54
|
+
}
|
|
55
|
+
catch (exc) {
|
|
56
|
+
const msg = exc instanceof Error ? exc.message : String(exc);
|
|
57
|
+
throw new Error(`Failed to parse YAML (${filePath}): ${msg}`);
|
|
58
|
+
}
|
|
59
|
+
if (parsed === null || parsed === undefined) {
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
if (!isPlainObject(parsed)) {
|
|
63
|
+
throw new Error(`Config must be a YAML mapping (${filePath}), got: ${Array.isArray(parsed) ? "list" : typeof parsed}`);
|
|
64
|
+
}
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Merge a global + (optional) per-server policy on top of defaults.
|
|
69
|
+
* Keys absent from the override fall back to `base`.
|
|
70
|
+
*/
|
|
71
|
+
export function mergePolicy(base, override) {
|
|
72
|
+
if (override === undefined)
|
|
73
|
+
return { ...base };
|
|
74
|
+
return {
|
|
75
|
+
read: override.read ?? base.read,
|
|
76
|
+
write: override.write ?? base.write,
|
|
77
|
+
delete: override.delete ?? base.delete,
|
|
78
|
+
admin: (override.admin ?? base.admin),
|
|
79
|
+
privilege: (override.privilege ?? base.privilege),
|
|
80
|
+
unbounded_select: override.unbounded_select ?? base.unbounded_select,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function validateRule(field, value, restricted) {
|
|
84
|
+
if (typeof value !== "string" || !VALID_RULES.has(value)) {
|
|
85
|
+
throw new Error(`${field}: expected one of [allow, present, escalate, deny], got: ${JSON.stringify(value)}`);
|
|
86
|
+
}
|
|
87
|
+
const rule = value;
|
|
88
|
+
if (restricted && rule === "allow") {
|
|
89
|
+
throw new Error(`${field}: 'allow' is not permitted (admin and privilege can be at most 'escalate'; safety floor)`);
|
|
90
|
+
}
|
|
91
|
+
return rule;
|
|
92
|
+
}
|
|
93
|
+
function validatePolicyObject(path, raw, allowPartial) {
|
|
94
|
+
if (raw === undefined || raw === null) {
|
|
95
|
+
if (allowPartial)
|
|
96
|
+
return {};
|
|
97
|
+
return { ...DEFAULT_POLICY };
|
|
98
|
+
}
|
|
99
|
+
if (!isPlainObject(raw)) {
|
|
100
|
+
throw new Error(`${path}: expected an object, got: ${typeof raw}`);
|
|
101
|
+
}
|
|
102
|
+
const out = {};
|
|
103
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
104
|
+
switch (k) {
|
|
105
|
+
case "read":
|
|
106
|
+
out.read = validateRule(`${path}.read`, v, false);
|
|
107
|
+
break;
|
|
108
|
+
case "write":
|
|
109
|
+
out.write = validateRule(`${path}.write`, v, false);
|
|
110
|
+
break;
|
|
111
|
+
case "delete":
|
|
112
|
+
out.delete = validateRule(`${path}.delete`, v, false);
|
|
113
|
+
break;
|
|
114
|
+
case "admin":
|
|
115
|
+
out.admin = validateRule(`${path}.admin`, v, true);
|
|
116
|
+
break;
|
|
117
|
+
case "privilege":
|
|
118
|
+
out.privilege = validateRule(`${path}.privilege`, v, true);
|
|
119
|
+
break;
|
|
120
|
+
case "unbounded_select":
|
|
121
|
+
if (typeof v !== "string" || !VALID_UNBOUNDED_MODES.has(v)) {
|
|
122
|
+
throw new Error(`${path}.unbounded_select: expected one of [escalate, allow], got: ${JSON.stringify(v)}`);
|
|
123
|
+
}
|
|
124
|
+
out.unbounded_select = v;
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
throw new Error(`${path}: unknown key '${k}' (expected: read, write, delete, admin, privilege, unbounded_select)`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (allowPartial)
|
|
131
|
+
return out;
|
|
132
|
+
return {
|
|
133
|
+
read: out.read ?? DEFAULT_POLICY.read,
|
|
134
|
+
write: out.write ?? DEFAULT_POLICY.write,
|
|
135
|
+
delete: out.delete ?? DEFAULT_POLICY.delete,
|
|
136
|
+
admin: (out.admin ?? DEFAULT_POLICY.admin),
|
|
137
|
+
privilege: (out.privilege ?? DEFAULT_POLICY.privilege),
|
|
138
|
+
unbounded_select: out.unbounded_select ?? DEFAULT_POLICY.unbounded_select,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function validateServer(alias, raw) {
|
|
142
|
+
if (!isPlainObject(raw)) {
|
|
143
|
+
throw new Error(`servers.${alias}: expected an object, got: ${typeof raw}`);
|
|
144
|
+
}
|
|
145
|
+
const driverRaw = raw["driver"];
|
|
146
|
+
if (typeof driverRaw !== "string" || driverRaw.length === 0) {
|
|
147
|
+
throw new Error(`servers.${alias}.driver: required string field (e.g. "sqlite", "postgresql", "mongodb", ...)`);
|
|
148
|
+
}
|
|
149
|
+
const policyRaw = raw["policy"];
|
|
150
|
+
const policy = policyRaw === undefined
|
|
151
|
+
? undefined
|
|
152
|
+
: validatePolicyObject(`servers.${alias}.policy`, policyRaw, true);
|
|
153
|
+
const approvalModeRaw = raw["approval_mode"];
|
|
154
|
+
if (approvalModeRaw !== undefined &&
|
|
155
|
+
typeof approvalModeRaw !== "string") {
|
|
156
|
+
throw new Error(`servers.${alias}.approval_mode: expected string, got: ${typeof approvalModeRaw}`);
|
|
157
|
+
}
|
|
158
|
+
const out = { driver: driverRaw };
|
|
159
|
+
if (policy !== undefined)
|
|
160
|
+
out.policy = policy;
|
|
161
|
+
if (typeof approvalModeRaw === "string")
|
|
162
|
+
out.approval_mode = approvalModeRaw;
|
|
163
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
164
|
+
if (k === "driver" || k === "policy" || k === "approval_mode")
|
|
165
|
+
continue;
|
|
166
|
+
out[k] = v;
|
|
167
|
+
}
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
function validateAudit(raw) {
|
|
171
|
+
if (raw === undefined || raw === null)
|
|
172
|
+
return undefined;
|
|
173
|
+
if (!isPlainObject(raw)) {
|
|
174
|
+
throw new Error(`audit: expected an object, got: ${typeof raw}`);
|
|
175
|
+
}
|
|
176
|
+
const enabled = raw["enabled"];
|
|
177
|
+
const pathVal = raw["path"];
|
|
178
|
+
if (typeof enabled !== "boolean") {
|
|
179
|
+
throw new Error(`audit.enabled: expected boolean, got: ${typeof enabled}`);
|
|
180
|
+
}
|
|
181
|
+
if (enabled) {
|
|
182
|
+
if (typeof pathVal !== "string" || pathVal.length === 0) {
|
|
183
|
+
throw new Error(`audit.path: expected non-empty string when audit.enabled is true`);
|
|
184
|
+
}
|
|
185
|
+
return { enabled, path: pathVal };
|
|
186
|
+
}
|
|
187
|
+
if (pathVal !== undefined && pathVal !== null) {
|
|
188
|
+
if (typeof pathVal !== "string" || pathVal.length === 0) {
|
|
189
|
+
throw new Error(`audit.path: expected non-empty string when present`);
|
|
190
|
+
}
|
|
191
|
+
return { enabled, path: pathVal };
|
|
192
|
+
}
|
|
193
|
+
return { enabled };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Validate a raw parsed YAML object against the plugin-config schema.
|
|
197
|
+
* Throws a descriptive error on any shape or value violation.
|
|
198
|
+
*/
|
|
199
|
+
export function validatePluginConfig(raw) {
|
|
200
|
+
if (!isPlainObject(raw)) {
|
|
201
|
+
throw new Error(`plugin config: expected a YAML mapping at root, got: ${typeof raw}`);
|
|
202
|
+
}
|
|
203
|
+
const policy = validatePolicyObject("policy", raw["policy"], false);
|
|
204
|
+
const serversRaw = raw["servers"];
|
|
205
|
+
if (serversRaw === undefined || serversRaw === null) {
|
|
206
|
+
throw new Error(`servers: required (at least one named server — keys are aliases)`);
|
|
207
|
+
}
|
|
208
|
+
if (!isPlainObject(serversRaw)) {
|
|
209
|
+
throw new Error(`servers: expected an object, got: ${typeof serversRaw}`);
|
|
210
|
+
}
|
|
211
|
+
if (Object.keys(serversRaw).length === 0) {
|
|
212
|
+
throw new Error(`servers: must contain at least one named server`);
|
|
213
|
+
}
|
|
214
|
+
const servers = {};
|
|
215
|
+
for (const [alias, rawSrv] of Object.entries(serversRaw)) {
|
|
216
|
+
servers[alias] = validateServer(alias, rawSrv);
|
|
217
|
+
}
|
|
218
|
+
const audit = validateAudit(raw["audit"]);
|
|
219
|
+
const out = { policy, servers };
|
|
220
|
+
if (audit !== undefined)
|
|
221
|
+
out.audit = audit;
|
|
222
|
+
for (const k of Object.keys(raw)) {
|
|
223
|
+
if (k !== "policy" && k !== "servers" && k !== "audit") {
|
|
224
|
+
throw new Error(`plugin config: unknown top-level key '${k}' (expected: policy, servers, audit)`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return out;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Parse + validate a plugin config from an explicit YAML file. Returns null
|
|
231
|
+
* when the file is not plugin-shaped (no `policy:` or `servers:` at the
|
|
232
|
+
* root) so callers can fall through to legacy parsers.
|
|
233
|
+
*
|
|
234
|
+
* V2.0: discovery via `~/.db-agent/` is removed. Standalone CLI runs read
|
|
235
|
+
* from `~/.connectors/config.yaml` via `@narai/connector-config`. This API
|
|
236
|
+
* remains for callers that pass `--config-path` directly.
|
|
237
|
+
*/
|
|
238
|
+
export function loadPluginConfig(opts = {}) {
|
|
239
|
+
if (opts.explicitPath === undefined || opts.explicitPath.length === 0) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
if (!fs.existsSync(opts.explicitPath)) {
|
|
243
|
+
throw new Error(`Config file not found: ${opts.explicitPath}`);
|
|
244
|
+
}
|
|
245
|
+
const parsed = readYaml(opts.explicitPath);
|
|
246
|
+
if (!isPluginShape(parsed))
|
|
247
|
+
return null;
|
|
248
|
+
return validatePluginConfig(parsed);
|
|
249
|
+
}
|
|
250
|
+
function isPluginShape(raw) {
|
|
251
|
+
return (Object.prototype.hasOwnProperty.call(raw, "policy") ||
|
|
252
|
+
Object.prototype.hasOwnProperty.call(raw, "servers"));
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Build a `PluginConfig` from a `connector-config`-resolved slice.
|
|
256
|
+
*
|
|
257
|
+
* The connector-config lib uses the new vocab natively. Each value in
|
|
258
|
+
* `slice.policy` is mapped onto our `PolicyRules`; `slice.options.servers`
|
|
259
|
+
* is validated through the same `validateServer` path so per-server
|
|
260
|
+
* overrides are still safety-checked.
|
|
261
|
+
*/
|
|
262
|
+
export function pluginConfigFromSlice(slice) {
|
|
263
|
+
const policy = validatePolicyObject("policy", slice.policy ?? {}, false);
|
|
264
|
+
const options = slice.options ?? {};
|
|
265
|
+
const serversRaw = options["servers"];
|
|
266
|
+
if (serversRaw === undefined || serversRaw === null) {
|
|
267
|
+
throw new Error(`servers: required (at least one named server — keys are aliases)`);
|
|
268
|
+
}
|
|
269
|
+
if (!isPlainObject(serversRaw)) {
|
|
270
|
+
throw new Error(`servers: expected an object, got: ${typeof serversRaw}`);
|
|
271
|
+
}
|
|
272
|
+
if (Object.keys(serversRaw).length === 0) {
|
|
273
|
+
throw new Error(`servers: must contain at least one named server`);
|
|
274
|
+
}
|
|
275
|
+
const servers = {};
|
|
276
|
+
for (const [alias, rawSrv] of Object.entries(serversRaw)) {
|
|
277
|
+
servers[alias] = validateServer(alias, rawSrv);
|
|
278
|
+
}
|
|
279
|
+
const audit = validateAudit(options["audit"]);
|
|
280
|
+
const out = { policy, servers };
|
|
281
|
+
if (audit !== undefined)
|
|
282
|
+
out.audit = audit;
|
|
283
|
+
return out;
|
|
284
|
+
}
|
|
285
|
+
// `parseCredentialRef`, `CredentialRef`, and `KNOWN_PROVIDERS` live in
|
|
286
|
+
// `@narai/credential-providers` now.
|
|
287
|
+
//# sourceMappingURL=plugin_config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin_config.js","sourceRoot":"","sources":["../../../../src/connectors/db/lib/plugin_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { DatabaseDriver } from "./drivers/base.js";
|
|
2
|
+
import { type PolicyRules } from "./plugin_config.js";
|
|
3
|
+
/** Possible outcomes of a policy check (wire format = lowercase string). */
|
|
4
|
+
export type Decision = "allow" | "deny" | "escalate" | "present_only";
|
|
5
|
+
/** Namespace providing Python-style attribute access (`Decision.ALLOW`). */
|
|
6
|
+
export declare const Decision: {
|
|
7
|
+
ALLOW: "allow";
|
|
8
|
+
DENY: "deny";
|
|
9
|
+
ESCALATE: "escalate";
|
|
10
|
+
PRESENT_ONLY: "present_only";
|
|
11
|
+
};
|
|
12
|
+
/** Classification of statements by intent (V2.0 vocab). */
|
|
13
|
+
export type OperationType = "read" | "write" | "delete" | "admin" | "privilege";
|
|
14
|
+
/** Namespace mirroring Python's `OperationType.READ` etc. */
|
|
15
|
+
export declare const OperationType: {
|
|
16
|
+
READ: "read";
|
|
17
|
+
WRITE: "write";
|
|
18
|
+
DELETE: "delete";
|
|
19
|
+
ADMIN: "admin";
|
|
20
|
+
PRIVILEGE: "privilege";
|
|
21
|
+
};
|
|
22
|
+
/** Discriminated union: `formatted_sql` is REQUIRED only when decision === "present_only". */
|
|
23
|
+
export type PolicyResult = {
|
|
24
|
+
decision: "allow";
|
|
25
|
+
reason: string;
|
|
26
|
+
} | {
|
|
27
|
+
decision: "deny";
|
|
28
|
+
reason: string;
|
|
29
|
+
} | {
|
|
30
|
+
decision: "escalate";
|
|
31
|
+
reason: string;
|
|
32
|
+
} | {
|
|
33
|
+
decision: "present_only";
|
|
34
|
+
reason: string;
|
|
35
|
+
formatted_sql: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Classify a SQL string by its leading keyword.
|
|
39
|
+
*
|
|
40
|
+
* Exported so SQL drivers (sqlite, postgres, mysql, mssql) can implement
|
|
41
|
+
* `DatabaseDriver.classifyOperation` without instantiating a Policy. Throws
|
|
42
|
+
* `Error("Empty SQL statement")` for empty/whitespace-only input.
|
|
43
|
+
*
|
|
44
|
+
* Default-deny: any unknown first-word falls through to `ADMIN` (most
|
|
45
|
+
* restrictive), matching `policy.py`'s safety-floor intent.
|
|
46
|
+
*/
|
|
47
|
+
export declare function classifySqlKeywords(sql: string): OperationType;
|
|
48
|
+
/**
|
|
49
|
+
* Classify every statement in a compound SQL string. Comments are stripped,
|
|
50
|
+
* then the input is split on semicolons (outside quoted literals). Each
|
|
51
|
+
* non-empty statement is classified via `classifySqlKeywords`. Throws
|
|
52
|
+
* `"Empty SQL statement"` when the result would be zero statements — same
|
|
53
|
+
* contract as `classifySqlKeywords` on empty input.
|
|
54
|
+
*
|
|
55
|
+
* The CLI pre-check and `Policy.checkQuery` both use this so that a compound
|
|
56
|
+
* like `SELECT 1; DROP TABLE users;` is classified as [READ, ADMIN] and the
|
|
57
|
+
* strictest rule (under V2.0 default `admin: present` → present_only) wins.
|
|
58
|
+
* A compound of all reads classifies as [READ, READ, ...] and the aggregate
|
|
59
|
+
* decision is allow.
|
|
60
|
+
*/
|
|
61
|
+
export declare function classifyStatements(sql: string): OperationType[];
|
|
62
|
+
export type ApprovalMode = "auto" | "confirm_once" | "confirm_each" | "grant_required";
|
|
63
|
+
/**
|
|
64
|
+
* Stateful policy engine that gates SQL execution.
|
|
65
|
+
*
|
|
66
|
+
* Parameters
|
|
67
|
+
* ----------
|
|
68
|
+
* approvalMode : string
|
|
69
|
+
* One of: auto, confirm_once, confirm_each, grant_required.
|
|
70
|
+
*/
|
|
71
|
+
export declare class Policy {
|
|
72
|
+
private readonly _approval_mode;
|
|
73
|
+
private readonly _rules;
|
|
74
|
+
private _session_approved;
|
|
75
|
+
private readonly _grants;
|
|
76
|
+
private readonly _expired_logged;
|
|
77
|
+
constructor(approvalMode?: string, rules?: PolicyRules);
|
|
78
|
+
/** Remove SQL comments from the statement. */
|
|
79
|
+
static _stripComments(sql: string): string;
|
|
80
|
+
/** Determine the OperationType of a raw SQL string. */
|
|
81
|
+
classifySql(sql: string): OperationType;
|
|
82
|
+
/** Return true if the SELECT appears to lack a bounding clause. */
|
|
83
|
+
static _isUnboundedSelect(sql: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Evaluate whether `sql` should be executed under current policy.
|
|
86
|
+
*
|
|
87
|
+
* G-DB-1: when `driver` is supplied, classification is delegated to
|
|
88
|
+
* `driver.classifyOperation()`. This lets non-relational drivers
|
|
89
|
+
* (MongoDB, DynamoDB) classify their JSON envelope queries instead of
|
|
90
|
+
* falling through SQL keyword matching (which would default to ADMIN).
|
|
91
|
+
*
|
|
92
|
+
* G-DB-AUDIT: every `deny` decision is emitted as a `policy_deny` event
|
|
93
|
+
* via `audit.logEvent`. The audit module no-ops when audit is disabled.
|
|
94
|
+
*/
|
|
95
|
+
checkQuery(sql: string, driver?: DatabaseDriver): PolicyResult;
|
|
96
|
+
/**
|
|
97
|
+
* Single-statement decision path. Factored out so compound handling can
|
|
98
|
+
* call it per sub-statement without emitting audit events (those are
|
|
99
|
+
* consolidated into one emission after combining). Compatible with the
|
|
100
|
+
* driver-provided path: when a non-SQL driver supplies its own
|
|
101
|
+
* `classifyOperation`, the whole query string flows through here.
|
|
102
|
+
*/
|
|
103
|
+
private _decideOne;
|
|
104
|
+
/**
|
|
105
|
+
* Driver-provided path: the caller owns classification (possibly via a
|
|
106
|
+
* JSON envelope for MongoDB/DynamoDB). Emits the audit event itself since
|
|
107
|
+
* we're not aggregating across multiple sub-statements here.
|
|
108
|
+
*/
|
|
109
|
+
private _checkSingleStatement;
|
|
110
|
+
/** Apply approval-mode logic for READ operations. */
|
|
111
|
+
private _checkRead;
|
|
112
|
+
/** Mark the current session as approved (for confirm_once mode). */
|
|
113
|
+
approveSession(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Add a time-limited grant.
|
|
116
|
+
*
|
|
117
|
+
* G-DB-AUDIT: emits a `grant_added` event with the grant type and TTL.
|
|
118
|
+
*
|
|
119
|
+
* Lifetime scope: grants are in-process only. Expiry is measured with
|
|
120
|
+
* `performance.now()`, which is reset on every Node process start, so
|
|
121
|
+
* a new CLI invocation always begins with no active grants — even if
|
|
122
|
+
* a previous run added one seconds ago. Suitable for the CLI's
|
|
123
|
+
* single-invocation model; not suitable as a cross-process gate.
|
|
124
|
+
*/
|
|
125
|
+
addGrant(grantType: string, ttlSeconds?: number): void;
|
|
126
|
+
/**
|
|
127
|
+
* Check whether a grant is currently active (not expired).
|
|
128
|
+
*
|
|
129
|
+
* G-DB-AUDIT: emits a single `grant_expired` event the first time an
|
|
130
|
+
* expired grant is observed (subsequent checks are silent so the audit
|
|
131
|
+
* log isn't spammed by repeated polling).
|
|
132
|
+
*/
|
|
133
|
+
isGrantActive(grantType: string): boolean;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Issue a time-limited grant whose TTL derives from an environment's
|
|
137
|
+
* `grant_duration_hours` field (v2 design §4 default: 8 hours).
|
|
138
|
+
*
|
|
139
|
+
* This is the recommended API for prod callers — `addGrant` remains the
|
|
140
|
+
* low-level primitive (5-minute default, used for short-lived operations
|
|
141
|
+
* like test scaffolding and administrative confirmations).
|
|
142
|
+
*
|
|
143
|
+
* Lifetime scope: grants live in memory only. Because `addGrant` uses
|
|
144
|
+
* `performance.now()` — a process-relative monotonic clock — a grant
|
|
145
|
+
* written in one CLI invocation does NOT carry into the next one, even
|
|
146
|
+
* if `grant_duration_hours=8`. The "8 hour" default means "up to 8
|
|
147
|
+
* wall-clock hours within a single long-running session," not "8
|
|
148
|
+
* wall-clock hours across reboots." Persisting grants to disk is out
|
|
149
|
+
* of scope for v2.
|
|
150
|
+
*/
|
|
151
|
+
export declare function grantFromEnv(policy: Policy, env: {
|
|
152
|
+
grant_duration_hours?: number;
|
|
153
|
+
}, grantType: string): void;
|
|
154
|
+
/**
|
|
155
|
+
* Serialize a PolicyResult to JSON.
|
|
156
|
+
*
|
|
157
|
+
* Key order: decision, reason, (formatted_sql only when decision ===
|
|
158
|
+
* "present_only"). V8 preserves string-key insertion order so explicit
|
|
159
|
+
* construction is sufficient.
|
|
160
|
+
*/
|
|
161
|
+
export declare function policyResultJson(result: PolicyResult): string;
|
|
162
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/connectors/db/lib/policy.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAC;AAEtE,4EAA4E;AAC5E,eAAO,MAAM,QAAQ;;;;;CAKe,CAAC;AAErC,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhF,6DAA6D;AAC7D,eAAO,MAAM,aAAa;;;;;;CAMe,CAAC;AAE1C,8FAA8F;AAC9F,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAmCxE;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAe9D;AAmCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAM/D;AAqBD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,cAAc,GACd,cAAc,GACd,gBAAgB,CAAC;AAMrB;;;;;;;GAOG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAG9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;gBAG5C,YAAY,GAAE,MAAe,EAC7B,KAAK,GAAE,WAA4B;IAiBrC,8CAA8C;IAC9C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAM1C,uDAAuD;IACvD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAQvC,mEAAmE;IACnE,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;;;;;OAUG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,YAAY;IAwE9D;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAqBlB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAoB7B,qDAAqD;IACrD,OAAO,CAAC,UAAU;IAmDlB,oEAAoE;IACpE,cAAc,IAAI,IAAI;IAItB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,GAAG,IAAI;IAS3D;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAa1C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,SAAS,EAAE,MAAM,GAChB,IAAI,CAGN;AAqGD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAY7D"}
|