@driftgate/cli 0.1.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/README.md +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1046 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
- package/src/index.ts +1293 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n DriftGateClient,\n DriftGateError,\n type DriftGateCanonicalResponse,\n type DriftGateEphemeralExecuteInput,\n type DriftGateSessionExecuteInput,\n type DriftGateSessionStartInput\n} from \"@driftgate/sdk\";\nimport { compileWorkflowYaml } from \"@driftgate/workflow-compiler\";\n\ntype CliConfig = {\n baseUrl: string;\n sessionToken?: string;\n apiKey?: string;\n expiresAt?: string;\n};\n\ntype ParsedArgs = {\n positionals: string[];\n options: Record<string, string | true>;\n};\n\nconst REQUIRED_V4_ERROR_CODES = new Set([\n \"AUTH_INVALID\",\n \"POLICY_DENIED\",\n \"RISK_EXCEEDED\",\n \"ROUTE_UNAVAILABLE\",\n \"TOOL_BLOCKED\",\n \"RATE_LIMITED\",\n \"TIMEOUT\",\n \"INTERNAL\",\n \"INVALID_REQUEST\"\n]);\n\nasync function main(): Promise<void> {\n const [, , command, ...rest] = process.argv;\n\n switch (command) {\n case \"login\":\n await handleLogin(rest);\n return;\n case \"init\":\n await handleInit(rest);\n return;\n case \"deploy\":\n await handleDeploy(rest);\n return;\n case \"publish\":\n await handlePublish(rest);\n return;\n case \"session\":\n await handleSession(rest);\n return;\n case \"execute\":\n await handleExecute(rest);\n return;\n case \"execution\":\n await handleExecution(rest);\n return;\n case \"run\":\n throw deprecatedCommandError(\"run\", \"driftgate session execute <sessionId> --input '{...}'\");\n case \"status\":\n throw deprecatedCommandError(\"status\", \"driftgate execution status <executionId>\");\n case \"approvals\":\n await handleApprovals(rest);\n return;\n case \"connectors\":\n await handleConnectors(rest);\n return;\n case \"secrets\":\n await handleSecrets(rest);\n return;\n case \"webhooks\":\n await handleWebhooks(rest);\n return;\n case \"help\":\n case \"--help\":\n case \"-h\":\n case undefined:\n printHelp();\n return;\n default:\n throw new Error(`unknown command: ${command}`);\n }\n}\n\nfunction parseArgs(input: string[]): ParsedArgs {\n const positionals: string[] = [];\n const options: Record<string, string | true> = {};\n\n for (let index = 0; index < input.length; index += 1) {\n const item = input[index];\n if (!item.startsWith(\"--\")) {\n positionals.push(item);\n continue;\n }\n\n const key = item.slice(2);\n const next = input[index + 1];\n if (!next || next.startsWith(\"--\")) {\n options[key] = true;\n continue;\n }\n\n options[key] = next;\n index += 1;\n }\n\n return { positionals, options };\n}\n\nfunction resolveBaseUrl(args: ParsedArgs, config?: CliConfig): string {\n const option = args.options[\"api-base\"];\n if (typeof option === \"string\" && option.length > 0) {\n return option.replace(/\\/$/, \"\");\n }\n const envBase = process.env.DG_API_BASE ?? process.env.DRIFTGATE_API_BASE;\n if (envBase && envBase.length > 0) {\n return envBase.replace(/\\/$/, \"\");\n }\n if (config?.baseUrl) {\n return config.baseUrl.replace(/\\/$/, \"\");\n }\n return \"http://127.0.0.1:3001\";\n}\n\nfunction getConfigDir(): string {\n const custom = process.env.DRIFTGATE_CLI_CONFIG_DIR;\n if (custom && custom.length > 0) {\n return custom;\n }\n const home = process.env.HOME;\n if (!home) {\n throw new Error(\"HOME is required for CLI config storage\");\n }\n return path.join(home, \".config\", \"driftgate\");\n}\n\nfunction getConfigPath(): string {\n return path.join(getConfigDir(), \"credentials.json\");\n}\n\nasync function loadConfig(): Promise<CliConfig | null> {\n const configPath = getConfigPath();\n if (!existsSync(configPath)) {\n return null;\n }\n\n const raw = await readFile(configPath, \"utf8\");\n return JSON.parse(raw) as CliConfig;\n}\n\nasync function saveConfig(config: CliConfig): Promise<void> {\n const configDir = getConfigDir();\n await mkdir(configDir, { recursive: true });\n await writeFile(getConfigPath(), JSON.stringify(config, null, 2));\n}\n\nfunction buildClient(baseUrl: string, config: CliConfig | null): DriftGateClient {\n const apiKey = process.env.DRIFTGATE_API_KEY ?? config?.apiKey;\n const sessionToken = apiKey ? undefined : process.env.DRIFTGATE_SESSION_TOKEN ?? config?.sessionToken;\n\n if (!apiKey && !sessionToken) {\n throw new Error(\"no credentials found; run `driftgate login` or set DRIFTGATE_API_KEY\");\n }\n\n return new DriftGateClient({\n baseUrl,\n apiKey,\n sessionToken\n });\n}\n\nfunction requireWorkspaceId(args: ParsedArgs, usage: string): string {\n const workspaceId =\n (typeof args.options.workspace === \"string\" && args.options.workspace) ||\n process.env.DRIFTGATE_WORKSPACE_ID;\n if (!workspaceId) {\n throw new Error(usage);\n }\n return workspaceId;\n}\n\nfunction parseBooleanValue(value: string | true | undefined, label: string): boolean | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === true) {\n return true;\n }\n\n const normalized = value.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) {\n return true;\n }\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) {\n return false;\n }\n\n throw new Error(`${label} must be one of: true|false|1|0|yes|no|on|off`);\n}\n\nasync function parseJsonObjectOption(\n value: string | true | undefined,\n label: string,\n fallback: Record<string, unknown>\n): Promise<Record<string, unknown>> {\n if (typeof value !== \"string\" || value.length === 0) {\n return fallback;\n }\n const raw = value.startsWith(\"@\") ? await readFile(value.slice(1), \"utf8\") : value;\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`${label} must be a JSON object`);\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction parseNullableConnectorId(value: string | true | undefined): string | null | undefined {\n if (value === undefined || value === true) {\n return undefined;\n }\n if (value.trim().toLowerCase() === \"null\") {\n return null;\n }\n return value;\n}\n\nfunction optionString(value: string | true | undefined): string | undefined {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction deprecatedCommandError(command: string, replacement: string): Error {\n return new Error(`command '${command}' was removed in V4 CLI; use '${replacement}'`);\n}\n\nfunction nowNs(): bigint {\n return process.hrtime.bigint();\n}\n\nfunction elapsedMs(startNs: bigint): number {\n const elapsed = process.hrtime.bigint() - startNs;\n return Number((Number(elapsed) / 1_000_000).toFixed(3));\n}\n\nfunction parseNumberOption(\n value: string | true | undefined,\n label: string,\n { integer = false, minimum }: { integer?: boolean; minimum?: number } = {}\n): number | undefined {\n const raw = optionString(value);\n if (!raw) {\n return undefined;\n }\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) {\n throw new Error(`${label} must be a valid number`);\n }\n if (integer && !Number.isInteger(parsed)) {\n throw new Error(`${label} must be an integer`);\n }\n if (minimum !== undefined && parsed < minimum) {\n throw new Error(`${label} must be >= ${minimum}`);\n }\n return parsed;\n}\n\nasync function parseRequiredInputOption(args: ParsedArgs): Promise<Record<string, unknown>> {\n const rawInput = optionString(args.options.input);\n if (!rawInput) {\n throw new Error(\"usage: --input '{...}' or --input @input.json is required\");\n }\n const source = rawInput.startsWith(\"@\") ? await readFile(rawInput.slice(1), \"utf8\") : rawInput;\n const parsed = JSON.parse(source);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"--input must parse to a JSON object\");\n }\n return parsed as Record<string, unknown>;\n}\n\nasync function parsePolicyOption(\n args: ParsedArgs\n): Promise<DriftGateSessionStartInput[\"policy\"] | undefined> {\n const policyOption = optionString(args.options.policy);\n if (policyOption) {\n const value = await parseJsonObjectOption(policyOption, \"--policy\", {});\n const ref = typeof value.ref === \"string\" ? value.ref : undefined;\n const version = typeof value.version === \"string\" ? value.version : undefined;\n if (!ref || !version) {\n throw new Error(\"--policy requires JSON object with string fields 'ref' and 'version'\");\n }\n return { ref, version };\n }\n\n const ref = optionString(args.options[\"policy-ref\"]);\n const version = optionString(args.options[\"policy-version\"]);\n if (!ref && !version) {\n return undefined;\n }\n if (!ref || !version) {\n throw new Error(\"--policy-ref and --policy-version must be provided together\");\n }\n return { ref, version };\n}\n\nasync function parseRouteOption(\n args: ParsedArgs\n): Promise<DriftGateSessionStartInput[\"route\"] | undefined> {\n const routeOption = optionString(args.options.route);\n if (routeOption) {\n const value = await parseJsonObjectOption(routeOption, \"--route\", {});\n const provider = typeof value.provider === \"string\" ? value.provider : undefined;\n const model = typeof value.model === \"string\" ? value.model : undefined;\n const region = typeof value.region === \"string\" ? value.region : undefined;\n if (!provider && !model && !region) {\n throw new Error(\"--route requires at least one of provider/model/region\");\n }\n return { provider, model, region };\n }\n\n const provider = optionString(args.options[\"route-provider\"]);\n const model = optionString(args.options[\"route-model\"]);\n const region = optionString(args.options[\"route-region\"]);\n if (!provider && !model && !region) {\n return undefined;\n }\n return { provider, model, region };\n}\n\nasync function parseRiskOption(\n args: ParsedArgs\n): Promise<DriftGateSessionStartInput[\"risk\"] | undefined> {\n const riskOption = optionString(args.options.risk);\n if (riskOption) {\n const value = await parseJsonObjectOption(riskOption, \"--risk\", {});\n const score = typeof value.score === \"number\" ? value.score : undefined;\n const decision =\n value.decision === \"allow\" || value.decision === \"deny\" || value.decision === \"review\"\n ? value.decision\n : undefined;\n if (score === undefined && decision === undefined) {\n throw new Error(\"--risk requires at least one of score/decision\");\n }\n return { score, decision };\n }\n\n const score = parseNumberOption(args.options[\"risk-score\"], \"--risk-score\");\n const decisionRaw = optionString(args.options[\"risk-decision\"]);\n if (decisionRaw && ![\"allow\", \"deny\", \"review\"].includes(decisionRaw)) {\n throw new Error(\"--risk-decision must be one of: allow|deny|review\");\n }\n const decision = decisionRaw as \"allow\" | \"deny\" | \"review\" | undefined;\n if (score === undefined && decision === undefined) {\n return undefined;\n }\n return { score, decision };\n}\n\nasync function parseV4ExecutionDefaults(\n args: ParsedArgs\n): Promise<Pick<DriftGateSessionExecuteInput, \"policy\" | \"route\" | \"risk\" | \"workflowVersionId\">> {\n return {\n policy: await parsePolicyOption(args),\n route: await parseRouteOption(args),\n risk: await parseRiskOption(args),\n workflowVersionId: optionString(args.options[\"workflow-version-id\"])\n };\n}\n\nfunction canonicalOutput<T>(response: DriftGateCanonicalResponse<T>): {\n ok: boolean;\n data: T | null;\n meta: DriftGateCanonicalResponse<T>[\"meta\"];\n error: DriftGateCanonicalResponse<T>[\"error\"];\n} {\n return {\n ok: response.ok,\n data: response.data,\n meta: response.meta,\n error: response.error\n };\n}\n\nfunction printJson(value: unknown): void {\n console.log(JSON.stringify(value, null, 2));\n}\n\nfunction mapStableErrorCode(inputCode: string, status: number): string {\n const normalized = inputCode.trim().toUpperCase();\n if (REQUIRED_V4_ERROR_CODES.has(normalized)) {\n return normalized;\n }\n\n switch (normalized) {\n case \"FORBIDDEN\":\n case \"POLICY_DENIED\":\n case \"ENTITLEMENT_DENIED\":\n return \"POLICY_DENIED\";\n case \"UNAUTHORIZED\":\n case \"AUTH_INVALID\":\n return \"AUTH_INVALID\";\n case \"FIREWALL_DENIED\":\n case \"TOOL_BLOCKED\":\n return \"TOOL_BLOCKED\";\n case \"NOT_FOUND\":\n return \"ROUTE_UNAVAILABLE\";\n case \"TIMEOUT\":\n return \"TIMEOUT\";\n case \"RATE_LIMITED\":\n return \"RATE_LIMITED\";\n case \"RISK_EXCEEDED\":\n return \"RISK_EXCEEDED\";\n case \"INVALID_REQUEST\":\n return \"INVALID_REQUEST\";\n default:\n break;\n }\n\n if (status === 401 || status === 403) {\n return \"AUTH_INVALID\";\n }\n if (status === 404) {\n return \"ROUTE_UNAVAILABLE\";\n }\n if (status === 408 || status === 504) {\n return \"TIMEOUT\";\n }\n if (status === 429) {\n return \"RATE_LIMITED\";\n }\n return \"INTERNAL\";\n}\n\nfunction renderErrorEnvelope(error: unknown): {\n ok: false;\n data: null;\n meta: { requestId: string; timingMs: { total: number } };\n error: {\n code: string;\n message: string;\n status: number;\n retryable: boolean;\n details?: Record<string, unknown>;\n };\n} {\n if (error instanceof DriftGateError) {\n const code = mapStableErrorCode(error.code, error.status);\n const retryable =\n code === \"RATE_LIMITED\" || code === \"TIMEOUT\" || error.status >= 500 || error.status === 429;\n return {\n ok: false,\n data: null,\n meta: {\n requestId: error.correlationId ?? `cli_${randomUUID()}`,\n timingMs: { total: 0 }\n },\n error: {\n code,\n message: error.message,\n status: error.status,\n retryable,\n ...(error.details && typeof error.details === \"object\"\n ? { details: error.details as Record<string, unknown> }\n : {})\n }\n };\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const isUsageError = message.startsWith(\"usage:\") || message.includes(\"removed in V4 CLI\");\n const status = isUsageError ? 400 : 500;\n const code = isUsageError ? \"INVALID_REQUEST\" : \"INTERNAL\";\n return {\n ok: false,\n data: null,\n meta: {\n requestId: `cli_${randomUUID()}`,\n timingMs: { total: 0 }\n },\n error: {\n code,\n message,\n status,\n retryable: false\n }\n };\n}\n\nasync function handleLogin(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const existingConfig = await loadConfig();\n const baseUrl = resolveBaseUrl(args, existingConfig ?? undefined);\n\n const directApiKey = process.env.DRIFTGATE_API_KEY;\n if (directApiKey && directApiKey.length > 0) {\n await saveConfig({ baseUrl, apiKey: directApiKey });\n console.log(\"Saved API key credentials for DriftGate CLI.\");\n return;\n }\n\n const auth0Domain = process.env.AUTH0_DOMAIN;\n const auth0ClientId = process.env.AUTH0_CLIENT_ID;\n if (!auth0Domain || !auth0ClientId) {\n throw new Error(\"AUTH0_DOMAIN and AUTH0_CLIENT_ID are required for device-code login\");\n }\n\n const auth0Audience = process.env.AUTH0_AUDIENCE;\n const deviceCodeResponse = await fetch(`https://${auth0Domain}/oauth/device/code`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: new URLSearchParams({\n client_id: auth0ClientId,\n scope: \"openid profile email offline_access\",\n ...(auth0Audience ? { audience: auth0Audience } : {})\n })\n });\n\n if (!deviceCodeResponse.ok) {\n const body = await deviceCodeResponse.text();\n throw new Error(`device-code start failed (${deviceCodeResponse.status}): ${body}`);\n }\n\n const deviceBody = (await deviceCodeResponse.json()) as {\n device_code: string;\n user_code: string;\n verification_uri: string;\n verification_uri_complete?: string;\n expires_in: number;\n interval?: number;\n };\n\n console.log(\"Complete DriftGate login in your browser:\");\n console.log(deviceBody.verification_uri_complete ?? deviceBody.verification_uri);\n console.log(`User code: ${deviceBody.user_code}`);\n\n const tokenEndpoint = `https://${auth0Domain}/oauth/token`;\n const pollIntervalMs = (deviceBody.interval ?? 5) * 1_000;\n const timeoutAt = Date.now() + deviceBody.expires_in * 1_000;\n\n let idToken: string | null = null;\n while (Date.now() < timeoutAt) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const tokenResponse = await fetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/x-www-form-urlencoded\"\n },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n device_code: deviceBody.device_code,\n client_id: auth0ClientId\n })\n });\n\n const tokenJson = (await tokenResponse.json()) as {\n access_token?: string;\n id_token?: string;\n error?: string;\n error_description?: string;\n };\n\n if (tokenResponse.ok) {\n idToken = tokenJson.id_token ?? null;\n break;\n }\n\n if (tokenJson.error === \"authorization_pending\" || tokenJson.error === \"slow_down\") {\n continue;\n }\n\n throw new Error(\n `device-code login failed: ${tokenJson.error ?? \"unknown_error\"} ${tokenJson.error_description ?? \"\"}`\n );\n }\n\n if (!idToken) {\n throw new Error(\"device-code login timed out or missing id_token in token response\");\n }\n\n const exchangeResponse = await fetch(`${baseUrl}/v1/auth/session/exchange`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\"\n },\n body: JSON.stringify({ idToken })\n });\n const exchangeBody = await exchangeResponse.json();\n\n if (!exchangeResponse.ok || typeof exchangeBody.sessionToken !== \"string\") {\n throw new Error(`session exchange failed (${exchangeResponse.status}): ${JSON.stringify(exchangeBody)}`);\n }\n\n await saveConfig({\n baseUrl,\n sessionToken: exchangeBody.sessionToken,\n expiresAt: typeof exchangeBody.expiresAt === \"string\" ? exchangeBody.expiresAt : undefined\n });\n console.log(\"Device-code login successful. Session token stored for DriftGate CLI.\");\n}\n\nasync function handleInit(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const outputPath =\n (typeof args.options[\"out\"] === \"string\" && args.options[\"out\"]) || \"workflow.yaml\";\n\n if (existsSync(outputPath) && args.options.force !== true) {\n throw new Error(`${outputPath} already exists. Pass --force to overwrite.`);\n }\n\n const template = `apiVersion: driftgate.ai/v1\nkind: Workflow\nmetadata:\n name: starter-workflow\n workspace: workspace_id_here\nspec:\n governance:\n policyBindings: []\n slaBindings: []\n nodes:\n - id: intake\n type: http\n config:\n method: POST\n path: /intake\n - id: complete\n type: task\n config: {}\n edges:\n - from: intake\n to: complete\n`;\n\n await writeFile(outputPath, template, \"utf8\");\n console.log(`Created ${outputPath}`);\n}\n\nasync function handleDeploy(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [yamlPath] = args.positionals;\n if (!yamlPath) {\n throw new Error(\"usage: driftgate deploy <workflow.yaml> [--workspace <workspaceId>] [--project <name>] [--workflow <name>]\");\n }\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n const workflowYaml = await readFile(yamlPath, \"utf8\");\n const compiled = compileWorkflowYaml(workflowYaml);\n const workspaceId =\n (typeof args.options.workspace === \"string\" && args.options.workspace) ||\n process.env.DRIFTGATE_WORKSPACE_ID;\n if (!workspaceId) {\n throw new Error(\"workspace id is required (--workspace or DRIFTGATE_WORKSPACE_ID)\");\n }\n\n const response = await client.deployWorkflow({\n workspaceId,\n projectName:\n (typeof args.options.project === \"string\" && args.options.project) || compiled.workflow.metadata.name,\n workflowName:\n (typeof args.options.workflow === \"string\" && args.options.workflow) || compiled.workflow.metadata.name,\n workflowYaml\n });\n\n console.log(\n JSON.stringify(\n {\n workflowId: response.workflow.id,\n projectId: response.project.id,\n draftVersion: response.draft.version,\n checksum: response.compile.checksum,\n mutationNodeIds: response.compile.mutationNodeIds\n },\n null,\n 2\n )\n );\n}\n\nasync function handlePublish(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [workflowId] = args.positionals;\n if (!workflowId) {\n throw new Error(\"usage: driftgate publish <workflowId> [--yaml <workflow.yaml>]\");\n }\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n const yamlPath = typeof args.options.yaml === \"string\" ? args.options.yaml : null;\n const workflowYaml = yamlPath ? await readFile(yamlPath, \"utf8\") : undefined;\n const version = await client.publishWorkflow(workflowId, workflowYaml);\n\n console.log(JSON.stringify(version, null, 2));\n}\n\nasync function handleSession(rest: string[]): Promise<void> {\n const [subcommand, ...tail] = rest;\n switch (subcommand) {\n case \"start\":\n await handleSessionStart(tail);\n return;\n case \"execute\":\n await handleSessionExecute(tail);\n return;\n default:\n throw new Error(\n \"usage: driftgate session start --agent <agent> [--workspace <workspaceId>] [--metadata '{...}'] [--policy '{...}'] [--route '{...}'] [--risk '{...}'] [--workflow-version-id <id>] [--expires-at <ISO-8601>] | driftgate session execute <sessionId> --input '{...}' [--policy '{...}'] [--route '{...}'] [--risk '{...}'] [--workflow-version-id <id>]\"\n );\n }\n}\n\nasync function handleSessionStart(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const agent = optionString(args.options.agent);\n if (!agent) {\n throw new Error(\n \"usage: driftgate session start --agent <agent> [--workspace <workspaceId>] [--metadata '{...}'] [--policy '{...}'] [--route '{...}'] [--risk '{...}'] [--workflow-version-id <id>] [--expires-at <ISO-8601>]\"\n );\n }\n\n const metadata =\n typeof args.options.metadata === \"string\"\n ? await parseJsonObjectOption(args.options.metadata, \"--metadata\", {})\n : undefined;\n const workspaceId = optionString(args.options.workspace) ?? process.env.DRIFTGATE_WORKSPACE_ID;\n const input: DriftGateSessionStartInput = {\n ...(workspaceId ? { workspaceId } : {}),\n agent,\n ...(optionString(args.options.subject) ? { subject: optionString(args.options.subject) } : {}),\n ...(metadata ? { metadata } : {}),\n ...(await parseV4ExecutionDefaults(args)),\n ...(optionString(args.options[\"expires-at\"]) ? { expiresAt: optionString(args.options[\"expires-at\"]) } : {})\n };\n\n const session = await client.session.start(input);\n printJson(canonicalOutput(session.startEnvelope));\n}\n\nasync function handleSessionExecute(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [sessionId] = args.positionals;\n if (!sessionId) {\n throw new Error(\n \"usage: driftgate session execute <sessionId> --input '{...}' [--policy '{...}'] [--route '{...}'] [--risk '{...}'] [--workflow-version-id <id>]\"\n );\n }\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const input: DriftGateSessionExecuteInput = {\n input: await parseRequiredInputOption(args),\n ...(await parseV4ExecutionDefaults(args))\n };\n const response = await client.executeSession(sessionId, input);\n printJson(canonicalOutput(response));\n}\n\nasync function handleExecute(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const agent = optionString(args.options.agent);\n if (!agent) {\n throw new Error(\n \"usage: driftgate execute --agent <agent> --input '{...}' [--workspace <workspaceId>] [--metadata '{...}'] [--policy '{...}'] [--route '{...}'] [--risk '{...}'] [--workflow-version-id <id>]\"\n );\n }\n const metadata =\n typeof args.options.metadata === \"string\"\n ? await parseJsonObjectOption(args.options.metadata, \"--metadata\", {})\n : undefined;\n const workspaceId = optionString(args.options.workspace) ?? process.env.DRIFTGATE_WORKSPACE_ID;\n const input: DriftGateEphemeralExecuteInput = {\n ...(workspaceId ? { workspaceId } : {}),\n agent,\n ...(optionString(args.options.subject) ? { subject: optionString(args.options.subject) } : {}),\n ...(metadata ? { metadata } : {}),\n ...(await parseV4ExecutionDefaults(args)),\n input: await parseRequiredInputOption(args)\n };\n const response = await client.execute(input);\n printJson(canonicalOutput(response));\n}\n\nasync function handleExecution(rest: string[]): Promise<void> {\n const [subcommand, ...tail] = rest;\n switch (subcommand) {\n case \"status\":\n await handleExecutionStatus(tail);\n return;\n case \"events\":\n await handleExecutionEvents(tail);\n return;\n case \"wait\":\n await handleExecutionWait(tail);\n return;\n default:\n throw new Error(\n \"usage: driftgate execution status <executionId> | driftgate execution events <executionId> | driftgate execution wait <executionId> [--interval-ms <ms>] [--timeout-ms <ms>]\"\n );\n }\n}\n\nasync function handleExecutionStatus(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [executionId] = args.positionals;\n if (!executionId) {\n throw new Error(\"usage: driftgate execution status <executionId>\");\n }\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const startedAtNs = nowNs();\n const response = await client.status(executionId);\n const events = await client.events(executionId);\n const requestId =\n typeof response.run.correlationId === \"string\" && response.run.correlationId.length > 0\n ? response.run.correlationId\n : `cli_${randomUUID()}`;\n\n printJson({\n ok: true,\n data: {\n run: response.run,\n approval: response.approval ?? null,\n latestEvent: events.length > 0 ? events[events.length - 1] : null,\n sourcePath: \"/v1/headless/runs/:runId\"\n },\n meta: {\n requestId,\n executionId,\n timingMs: { total: elapsedMs(startedAtNs) }\n },\n error: null\n });\n}\n\nasync function handleExecutionEvents(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [executionId] = args.positionals;\n if (!executionId) {\n throw new Error(\"usage: driftgate execution events <executionId>\");\n }\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const startedAtNs = nowNs();\n const events = await client.events(executionId);\n printJson({\n ok: true,\n data: {\n events,\n sourcePath: \"/v1/headless/runs/:runId/events\"\n },\n meta: {\n requestId: `cli_${randomUUID()}`,\n executionId,\n timingMs: { total: elapsedMs(startedAtNs) }\n },\n error: null\n });\n}\n\nasync function handleExecutionWait(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [executionId] = args.positionals;\n if (!executionId) {\n throw new Error(\"usage: driftgate execution wait <executionId> [--interval-ms <ms>] [--timeout-ms <ms>]\");\n }\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n const intervalMs = parseNumberOption(args.options[\"interval-ms\"], \"--interval-ms\", {\n integer: true,\n minimum: 1\n });\n const timeoutMs = parseNumberOption(args.options[\"timeout-ms\"], \"--timeout-ms\", {\n integer: true,\n minimum: 1\n });\n\n const startedAtNs = nowNs();\n const response = await client.waitForTerminal(executionId, {\n ...(intervalMs !== undefined ? { intervalMs } : {}),\n ...(timeoutMs !== undefined ? { timeoutMs } : {})\n });\n const requestId =\n typeof response.run.correlationId === \"string\" && response.run.correlationId.length > 0\n ? response.run.correlationId\n : `cli_${randomUUID()}`;\n\n printJson({\n ok: true,\n data: {\n run: response.run,\n approval: response.approval ?? null,\n sourcePath: \"/v1/headless/runs/:runId\"\n },\n meta: {\n requestId,\n executionId,\n timingMs: { total: elapsedMs(startedAtNs) }\n },\n error: null\n });\n}\n\nasync function handleApprovals(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [subcommand, subject] = args.positionals;\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n if (subcommand === \"list\") {\n const workspaceId =\n (typeof args.options.workspace === \"string\" && args.options.workspace) ||\n process.env.DRIFTGATE_WORKSPACE_ID;\n if (!workspaceId) {\n throw new Error(\"usage: driftgate approvals list --workspace <workspaceId>\");\n }\n\n const status =\n typeof args.options.status === \"string\"\n ? (args.options.status as \"pending\" | \"approved\" | \"denied\")\n : undefined;\n const approvals = await client.approvals.list(workspaceId, status);\n console.log(JSON.stringify(approvals, null, 2));\n return;\n }\n\n if (subcommand === \"approve\") {\n if (!subject) {\n throw new Error(\"usage: driftgate approvals approve <approvalId>\");\n }\n const result = await client.approvals.approve(subject);\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (subcommand === \"deny\") {\n if (!subject) {\n throw new Error(\"usage: driftgate approvals deny <approvalId>\");\n }\n const result = await client.approvals.deny(subject);\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n throw new Error(\"usage: driftgate approvals list|approve|deny ...\");\n}\n\nasync function handleConnectors(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [subcommand, connectorId] = args.positionals;\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n if (subcommand === \"list\") {\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate connectors list --workspace <workspaceId>\");\n const connectors = await client.connectors.list(workspaceId);\n console.log(JSON.stringify(connectors, null, 2));\n return;\n }\n\n if (subcommand === \"create\") {\n const workspaceId = requireWorkspaceId(\n args,\n \"usage: driftgate connectors create --workspace <workspaceId> --name <name> --type <connectorType> [--status active|disabled] [--config '{...}']\"\n );\n const name = typeof args.options.name === \"string\" ? args.options.name : \"\";\n const connectorType = typeof args.options.type === \"string\" ? args.options.type : \"\";\n if (!name || !connectorType) {\n throw new Error(\"usage: driftgate connectors create --workspace <workspaceId> --name <name> --type <connectorType>\");\n }\n const configJson = await parseJsonObjectOption(args.options.config, \"--config\", {});\n const status =\n typeof args.options.status === \"string\" ? (args.options.status as \"active\" | \"disabled\") : undefined;\n const connector = await client.connectors.create(workspaceId, {\n name,\n connectorType,\n status,\n config: configJson\n });\n console.log(JSON.stringify(connector, null, 2));\n return;\n }\n\n if (subcommand === \"update\") {\n if (!connectorId) {\n throw new Error(\"usage: driftgate connectors update <connectorId> --workspace <workspaceId> [--name <name>] [--type <connectorType>] [--status active|disabled] [--config '{...}']\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate connectors update <connectorId> --workspace <workspaceId> ...\");\n const configPatch =\n typeof args.options.config === \"string\"\n ? await parseJsonObjectOption(args.options.config, \"--config\", {})\n : undefined;\n const input = {\n ...(typeof args.options.name === \"string\" ? { name: args.options.name } : {}),\n ...(typeof args.options.type === \"string\" ? { connectorType: args.options.type } : {}),\n ...(typeof args.options.status === \"string\"\n ? { status: args.options.status as \"active\" | \"disabled\" }\n : {}),\n ...(configPatch ? { config: configPatch } : {})\n };\n if (Object.keys(input).length === 0) {\n throw new Error(\"usage: driftgate connectors update <connectorId> --workspace <workspaceId> requires at least one field\");\n }\n const connector = await client.connectors.update(workspaceId, connectorId, input);\n console.log(JSON.stringify(connector, null, 2));\n return;\n }\n\n if (subcommand === \"delete\") {\n if (!connectorId) {\n throw new Error(\"usage: driftgate connectors delete <connectorId> --workspace <workspaceId>\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate connectors delete <connectorId> --workspace <workspaceId>\");\n const connector = await client.connectors.delete(workspaceId, connectorId);\n console.log(JSON.stringify(connector, null, 2));\n return;\n }\n\n throw new Error(\"usage: driftgate connectors list|create|update|delete ...\");\n}\n\nasync function handleSecrets(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [subcommand, secretId] = args.positionals;\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n if (subcommand === \"list\") {\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate secrets list --workspace <workspaceId>\");\n const secrets = await client.secrets.list(workspaceId);\n console.log(JSON.stringify(secrets, null, 2));\n return;\n }\n\n if (subcommand === \"create\") {\n const workspaceId = requireWorkspaceId(\n args,\n \"usage: driftgate secrets create --workspace <workspaceId> --name <name> --value <value> [--connector-id <id|null>] [--metadata '{...}']\"\n );\n const name = typeof args.options.name === \"string\" ? args.options.name : \"\";\n const value = typeof args.options.value === \"string\" ? args.options.value : \"\";\n if (!name || !value) {\n throw new Error(\"usage: driftgate secrets create --workspace <workspaceId> --name <name> --value <value>\");\n }\n const metadata = await parseJsonObjectOption(args.options.metadata, \"--metadata\", {});\n const secret = await client.secrets.create(workspaceId, {\n name,\n value,\n connectorId: parseNullableConnectorId(args.options[\"connector-id\"]),\n keyVersion: typeof args.options[\"key-version\"] === \"string\" ? args.options[\"key-version\"] : undefined,\n metadata\n });\n console.log(JSON.stringify(secret, null, 2));\n return;\n }\n\n if (subcommand === \"update\") {\n if (!secretId) {\n throw new Error(\"usage: driftgate secrets update <secretId> --workspace <workspaceId> [--name <name>] [--value <value>] [--connector-id <id|null>] [--metadata '{...}']\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate secrets update <secretId> --workspace <workspaceId> ...\");\n const metadataPatch =\n typeof args.options.metadata === \"string\"\n ? await parseJsonObjectOption(args.options.metadata, \"--metadata\", {})\n : undefined;\n const input = {\n ...(typeof args.options.name === \"string\" ? { name: args.options.name } : {}),\n ...(typeof args.options.value === \"string\" ? { value: args.options.value } : {}),\n ...(args.options[\"connector-id\"] !== undefined\n ? { connectorId: parseNullableConnectorId(args.options[\"connector-id\"]) }\n : {}),\n ...(typeof args.options[\"key-version\"] === \"string\" ? { keyVersion: args.options[\"key-version\"] } : {}),\n ...(metadataPatch ? { metadata: metadataPatch } : {})\n };\n if (Object.keys(input).length === 0) {\n throw new Error(\"usage: driftgate secrets update <secretId> --workspace <workspaceId> requires at least one field\");\n }\n const secret = await client.secrets.update(workspaceId, secretId, input);\n console.log(JSON.stringify(secret, null, 2));\n return;\n }\n\n if (subcommand === \"delete\") {\n if (!secretId) {\n throw new Error(\"usage: driftgate secrets delete <secretId> --workspace <workspaceId>\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate secrets delete <secretId> --workspace <workspaceId>\");\n const secret = await client.secrets.delete(workspaceId, secretId);\n console.log(JSON.stringify(secret, null, 2));\n return;\n }\n\n throw new Error(\"usage: driftgate secrets list|create|update|delete ...\");\n}\n\nasync function handleWebhooks(rest: string[]): Promise<void> {\n const args = parseArgs(rest);\n const [subcommand, webhookId] = args.positionals;\n\n const config = await loadConfig();\n const baseUrl = resolveBaseUrl(args, config ?? undefined);\n const client = buildClient(baseUrl, config);\n\n if (subcommand === \"list\") {\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate webhooks list --workspace <workspaceId>\");\n const webhooks = await client.webhooks.list(workspaceId);\n console.log(JSON.stringify(webhooks, null, 2));\n return;\n }\n\n if (subcommand === \"create\") {\n const workspaceId = requireWorkspaceId(\n args,\n \"usage: driftgate webhooks create --workspace <workspaceId> --name <name> --path </hook> --target-workflow <workflowId> --signing-secret <secret>\"\n );\n const name = typeof args.options.name === \"string\" ? args.options.name : \"\";\n const hookPath = typeof args.options.path === \"string\" ? args.options.path : \"\";\n const targetWorkflowId =\n typeof args.options[\"target-workflow\"] === \"string\" ? args.options[\"target-workflow\"] : \"\";\n const signingSecret =\n typeof args.options[\"signing-secret\"] === \"string\" ? args.options[\"signing-secret\"] : \"\";\n if (!name || !hookPath || !targetWorkflowId || !signingSecret) {\n throw new Error(\n \"usage: driftgate webhooks create --workspace <workspaceId> --name <name> --path </hook> --target-workflow <workflowId> --signing-secret <secret>\"\n );\n }\n\n const eventFilter = await parseJsonObjectOption(args.options[\"event-filter\"], \"--event-filter\", {});\n const executionJson = await parseJsonObjectOption(args.options.execution, \"--execution\", {});\n const requiresApproval = parseBooleanValue(args.options[\"requires-approval\"], \"--requires-approval\");\n const execution = {\n ...executionJson,\n ...(requiresApproval !== undefined ? { requiresApproval } : {}),\n ...(typeof args.options[\"required-role\"] === \"string\"\n ? { requiredRole: args.options[\"required-role\"] }\n : {}),\n ...(typeof args.options[\"sla-policy-id\"] === \"string\"\n ? { slaPolicyId: args.options[\"sla-policy-id\"] }\n : {})\n };\n\n const webhook = await client.webhooks.create(workspaceId, {\n connectorId: parseNullableConnectorId(args.options[\"connector-id\"]),\n name,\n path: hookPath,\n targetWorkflowId,\n status:\n typeof args.options.status === \"string\" ? (args.options.status as \"active\" | \"disabled\") : undefined,\n eventFilter,\n execution,\n signingSecret\n });\n console.log(JSON.stringify(webhook, null, 2));\n return;\n }\n\n if (subcommand === \"update\") {\n if (!webhookId) {\n throw new Error(\"usage: driftgate webhooks update <webhookId> --workspace <workspaceId> [--name ...]\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate webhooks update <webhookId> --workspace <workspaceId> ...\");\n const eventFilterPatch =\n typeof args.options[\"event-filter\"] === \"string\"\n ? await parseJsonObjectOption(args.options[\"event-filter\"], \"--event-filter\", {})\n : undefined;\n const executionPatch =\n typeof args.options.execution === \"string\"\n ? await parseJsonObjectOption(args.options.execution, \"--execution\", {})\n : undefined;\n const requiresApprovalPatch = parseBooleanValue(\n args.options[\"requires-approval\"],\n \"--requires-approval\"\n );\n\n const execution = {\n ...(executionPatch ?? {}),\n ...(requiresApprovalPatch !== undefined ? { requiresApproval: requiresApprovalPatch } : {}),\n ...(typeof args.options[\"required-role\"] === \"string\"\n ? { requiredRole: args.options[\"required-role\"] }\n : {}),\n ...(typeof args.options[\"sla-policy-id\"] === \"string\"\n ? { slaPolicyId: args.options[\"sla-policy-id\"] }\n : {})\n };\n\n const input = {\n ...(args.options[\"connector-id\"] !== undefined\n ? { connectorId: parseNullableConnectorId(args.options[\"connector-id\"]) }\n : {}),\n ...(typeof args.options.name === \"string\" ? { name: args.options.name } : {}),\n ...(typeof args.options.path === \"string\" ? { path: args.options.path } : {}),\n ...(typeof args.options[\"target-workflow\"] === \"string\"\n ? { targetWorkflowId: args.options[\"target-workflow\"] }\n : {}),\n ...(typeof args.options.status === \"string\"\n ? { status: args.options.status as \"active\" | \"disabled\" }\n : {}),\n ...(eventFilterPatch ? { eventFilter: eventFilterPatch } : {}),\n ...(Object.keys(execution).length > 0 ? { execution } : {}),\n ...(typeof args.options[\"signing-secret\"] === \"string\"\n ? { signingSecret: args.options[\"signing-secret\"] }\n : {})\n };\n\n if (Object.keys(input).length === 0) {\n throw new Error(\"usage: driftgate webhooks update <webhookId> --workspace <workspaceId> requires at least one field\");\n }\n\n const webhook = await client.webhooks.update(workspaceId, webhookId, input);\n console.log(JSON.stringify(webhook, null, 2));\n return;\n }\n\n if (subcommand === \"delete\") {\n if (!webhookId) {\n throw new Error(\"usage: driftgate webhooks delete <webhookId> --workspace <workspaceId>\");\n }\n const workspaceId = requireWorkspaceId(args, \"usage: driftgate webhooks delete <webhookId> --workspace <workspaceId>\");\n const webhook = await client.webhooks.delete(workspaceId, webhookId);\n console.log(JSON.stringify(webhook, null, 2));\n return;\n }\n\n throw new Error(\"usage: driftgate webhooks list|create|update|delete ...\");\n}\n\nfunction printHelp(): void {\n console.log(`driftgate CLI\n\nCommands:\n driftgate login [--api-base <url>]\n driftgate init [--out workflow.yaml] [--force]\n driftgate deploy <workflow.yaml> --workspace <workspaceId> [--project <name>] [--workflow <name>]\n driftgate publish <workflowId> [--yaml workflow.yaml]\n driftgate session start --agent <agent> [--workspace <workspaceId>] [--subject <subject>] [--metadata '{\"key\":\"value\"}' | --metadata @metadata.json] [--policy '{\"ref\":\"default\",\"version\":\"latest\"}'] [--route '{\"provider\":\"openai\",\"model\":\"gpt-4.1-mini\",\"region\":\"us-east-1\"}'] [--risk '{\"score\":12.5,\"decision\":\"allow\"}'] [--workflow-version-id <id>] [--expires-at <ISO-8601>]\n driftgate session execute <sessionId> --input '{\"key\":\"value\"}' | --input @input.json [--policy '{\"ref\":\"default\",\"version\":\"latest\"}'] [--route '{\"provider\":\"openai\"}'] [--risk '{\"score\":12.5,\"decision\":\"allow\"}'] [--workflow-version-id <id>]\n driftgate execute --agent <agent> --input '{\"key\":\"value\"}' | --input @input.json [--workspace <workspaceId>] [--subject <subject>] [--metadata '{\"key\":\"value\"}' | --metadata @metadata.json] [--policy '{\"ref\":\"default\",\"version\":\"latest\"}'] [--route '{\"provider\":\"openai\"}'] [--risk '{\"score\":12.5,\"decision\":\"allow\"}'] [--workflow-version-id <id>]\n driftgate execution status <executionId>\n driftgate execution events <executionId>\n driftgate execution wait <executionId> [--interval-ms <ms>] [--timeout-ms <ms>]\n driftgate approvals list --workspace <workspaceId> [--status pending|approved|denied]\n driftgate approvals approve <approvalId>\n driftgate approvals deny <approvalId>\n driftgate connectors list --workspace <workspaceId>\n driftgate connectors create --workspace <workspaceId> --name <name> --type <connectorType> [--status active|disabled] [--config '{...}']\n driftgate connectors update <connectorId> --workspace <workspaceId> [--name <name>] [--type <connectorType>] [--status active|disabled] [--config '{...}']\n driftgate connectors delete <connectorId> --workspace <workspaceId>\n driftgate secrets list --workspace <workspaceId>\n driftgate secrets create --workspace <workspaceId> --name <name> --value <value> [--connector-id <id|null>] [--key-version <v>] [--metadata '{...}']\n driftgate secrets update <secretId> --workspace <workspaceId> [--name <name>] [--value <value>] [--connector-id <id|null>] [--key-version <v>] [--metadata '{...}']\n driftgate secrets delete <secretId> --workspace <workspaceId>\n driftgate webhooks list --workspace <workspaceId>\n driftgate webhooks create --workspace <workspaceId> --name <name> --path </hook> --target-workflow <workflowId> --signing-secret <secret> [--connector-id <id|null>] [--status active|disabled] [--event-filter '{...}'] [--execution '{...}'] [--requires-approval true|false] [--required-role <role>] [--sla-policy-id <id>]\n driftgate webhooks update <webhookId> --workspace <workspaceId> [--name <name>] [--path </hook>] [--target-workflow <workflowId>] [--status active|disabled] [--event-filter '{...}'] [--execution '{...}'] [--requires-approval true|false] [--required-role <role>] [--sla-policy-id <id>] [--signing-secret <secret>] [--connector-id <id|null>]\n driftgate webhooks delete <webhookId> --workspace <workspaceId>\n\nRemoved in V4 CLI:\n driftgate run ...\n driftgate status ...\n`);\n}\n\nvoid main().catch((error: unknown) => {\n console.error(JSON.stringify(renderErrorEnvelope(error), null, 2));\n process.exitCode = 1;\n});\n"],"mappings":"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","names":["ref","version","provider","model","region","score","decision","code"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@driftgate/cli",
|
|
3
|
+
"version": "0.1.0-rc.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "DriftGate CLI for canonical V4 session and execution workflows.",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"driftgate": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js",
|
|
16
|
+
"require": "./src/index.ts",
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./src/*": "./src/*",
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"src",
|
|
25
|
+
"README.md"
|
|
26
|
+
],
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"provenance": true
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://github.com/driftgate/driftgate-cli.git"
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup src/index.ts --format esm --target node20 --platform node --dts --sourcemap --clean --tsconfig tsconfig.build.json && node -e \"const fs=require('fs');const p='dist/index.js';const s=fs.readFileSync(p,'utf8');if(!s.startsWith('#!/usr/bin/env node'))fs.writeFileSync(p,'#!/usr/bin/env node\\n'+s);\"",
|
|
37
|
+
"clean": "rm -rf dist"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@driftgate/sdk": "0.1.0-rc.1",
|
|
41
|
+
"@driftgate/workflow-compiler": "0.1.0-rc.1"
|
|
42
|
+
}
|
|
43
|
+
}
|