@starlein/paperclip-plugin-company-wizard 0.4.18 → 0.4.21
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/CHANGELOG.md +73 -0
- package/README.md +13 -9
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +6 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +19 -3
- package/dist/ui/index.js.map +2 -2
- package/dist/worker.js +2212 -561
- package/dist/worker.js.map +3 -3
- package/package.json +5 -5
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +2 -1
- package/templates/modules/auto-assign/skills/auto-assign.md +1 -0
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +1 -0
- package/templates/modules/backlog/module.meta.json +2 -1
- package/templates/modules/backlog/skills/backlog-health.md +3 -1
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +1 -1
- package/templates/modules/github-repo/docs/git-workflow.md +2 -2
- package/templates/modules/pr-review/README.md +2 -2
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +3 -3
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +6 -6
- package/templates/modules/pr-review/docs/pr-conventions.md +2 -2
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +20 -17
- package/templates/roles/audio-designer/HEARTBEAT.md +2 -2
- package/templates/roles/ceo/HEARTBEAT.md +2 -2
- package/templates/roles/ceo/role.meta.json +1 -1
- package/templates/roles/cmo/HEARTBEAT.md +2 -2
- package/templates/roles/code-reviewer/AGENTS.md +1 -1
- package/templates/roles/code-reviewer/HEARTBEAT.md +3 -2
- package/templates/roles/cto/HEARTBEAT.md +2 -2
- package/templates/roles/cto/role.meta.json +1 -1
- package/templates/roles/customer-success/HEARTBEAT.md +2 -2
- package/templates/roles/devops/HEARTBEAT.md +2 -2
- package/templates/roles/engineer/AGENTS.md +1 -0
- package/templates/roles/engineer/HEARTBEAT.md +3 -2
- package/templates/roles/game-artist/HEARTBEAT.md +2 -2
- package/templates/roles/game-designer/HEARTBEAT.md +2 -2
- package/templates/roles/level-designer/HEARTBEAT.md +2 -2
- package/templates/roles/product-owner/AGENTS.md +1 -0
- package/templates/roles/product-owner/HEARTBEAT.md +2 -2
- package/templates/roles/qa/HEARTBEAT.md +2 -1
- package/templates/roles/security-engineer/AGENTS.md +1 -0
- package/templates/roles/security-engineer/HEARTBEAT.md +2 -2
- package/templates/roles/technical-writer/HEARTBEAT.md +2 -2
- package/templates/roles/ui-designer/HEARTBEAT.md +2 -2
- package/templates/roles/ux-researcher/HEARTBEAT.md +2 -2
package/dist/worker.js
CHANGED
|
@@ -4,7 +4,7 @@ var __export = (target, all) => {
|
|
|
4
4
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
5
|
};
|
|
6
6
|
|
|
7
|
-
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.
|
|
7
|
+
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.707.0_react@19.2.4/node_modules/@paperclipai/plugin-sdk/dist/define-plugin.js
|
|
8
8
|
function definePlugin(definition) {
|
|
9
9
|
return Object.freeze({ definition });
|
|
10
10
|
}
|
|
@@ -4050,7 +4050,7 @@ var coerce = {
|
|
|
4050
4050
|
};
|
|
4051
4051
|
var NEVER = INVALID;
|
|
4052
4052
|
|
|
4053
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4053
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/constants.js
|
|
4054
4054
|
var COMPANY_STATUSES = ["active", "paused", "archived"];
|
|
4055
4055
|
var DEFAULT_COMPANY_ATTACHMENT_MAX_BYTES = 10 * 1024 * 1024;
|
|
4056
4056
|
var MAX_COMPANY_ATTACHMENT_MAX_BYTES = 1024 * 1024 * 1024;
|
|
@@ -4075,6 +4075,8 @@ var AGENT_ADAPTER_TYPES = [
|
|
|
4075
4075
|
"codex_local",
|
|
4076
4076
|
"cursor_cloud",
|
|
4077
4077
|
"gemini_local",
|
|
4078
|
+
"hermes_gateway",
|
|
4079
|
+
"hermes_local",
|
|
4078
4080
|
"opencode_local",
|
|
4079
4081
|
"pi_local",
|
|
4080
4082
|
"cursor",
|
|
@@ -4138,6 +4140,47 @@ var AGENT_ICON_NAMES = [
|
|
|
4138
4140
|
"pentagon",
|
|
4139
4141
|
"fingerprint"
|
|
4140
4142
|
];
|
|
4143
|
+
var PROJECT_ICON_NAMES = [
|
|
4144
|
+
"folder",
|
|
4145
|
+
"rocket",
|
|
4146
|
+
"code",
|
|
4147
|
+
"terminal",
|
|
4148
|
+
"database",
|
|
4149
|
+
"globe",
|
|
4150
|
+
"package",
|
|
4151
|
+
"boxes",
|
|
4152
|
+
"box",
|
|
4153
|
+
"layers",
|
|
4154
|
+
"briefcase",
|
|
4155
|
+
"compass",
|
|
4156
|
+
"target",
|
|
4157
|
+
"flame",
|
|
4158
|
+
"zap",
|
|
4159
|
+
"star",
|
|
4160
|
+
"bug",
|
|
4161
|
+
"wrench",
|
|
4162
|
+
"hammer",
|
|
4163
|
+
"lightbulb",
|
|
4164
|
+
"sparkles",
|
|
4165
|
+
"shield",
|
|
4166
|
+
"lock",
|
|
4167
|
+
"search",
|
|
4168
|
+
"cog",
|
|
4169
|
+
"brain",
|
|
4170
|
+
"cpu",
|
|
4171
|
+
"git-branch",
|
|
4172
|
+
"file-code",
|
|
4173
|
+
"puzzle",
|
|
4174
|
+
"gem",
|
|
4175
|
+
"atom",
|
|
4176
|
+
"heart",
|
|
4177
|
+
"mail",
|
|
4178
|
+
"message-square",
|
|
4179
|
+
"crown",
|
|
4180
|
+
"radar",
|
|
4181
|
+
"telescope",
|
|
4182
|
+
"hexagon"
|
|
4183
|
+
];
|
|
4141
4184
|
var ISSUE_STATUSES = [
|
|
4142
4185
|
"backlog",
|
|
4143
4186
|
"todo",
|
|
@@ -4157,7 +4200,7 @@ var INBOX_MINE_ISSUE_STATUSES = [
|
|
|
4157
4200
|
];
|
|
4158
4201
|
var INBOX_MINE_ISSUE_STATUS_FILTER = INBOX_MINE_ISSUE_STATUSES.join(",");
|
|
4159
4202
|
var ISSUE_PRIORITIES = ["critical", "high", "medium", "low"];
|
|
4160
|
-
var ISSUE_WORK_MODES = ["standard", "planning"];
|
|
4203
|
+
var ISSUE_WORK_MODES = ["standard", "ask", "planning"];
|
|
4161
4204
|
var MAX_ISSUE_REQUEST_DEPTH = 1024;
|
|
4162
4205
|
var ISSUE_COMMENT_AUTHOR_TYPES = ["user", "agent", "system"];
|
|
4163
4206
|
var ISSUE_COMMENT_PRESENTATION_KINDS = ["message", "system_notice"];
|
|
@@ -4178,8 +4221,10 @@ function clampIssueRequestDepth(value) {
|
|
|
4178
4221
|
var ISSUE_THREAD_INTERACTION_KINDS = [
|
|
4179
4222
|
"suggest_tasks",
|
|
4180
4223
|
"ask_user_questions",
|
|
4181
|
-
"request_confirmation"
|
|
4224
|
+
"request_confirmation",
|
|
4225
|
+
"request_checkbox_confirmation"
|
|
4182
4226
|
];
|
|
4227
|
+
var REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT = 200;
|
|
4183
4228
|
var ISSUE_THREAD_INTERACTION_STATUSES = [
|
|
4184
4229
|
"pending",
|
|
4185
4230
|
"accepted",
|
|
@@ -4194,10 +4239,13 @@ var ISSUE_THREAD_INTERACTION_CONTINUATION_POLICIES = [
|
|
|
4194
4239
|
"wake_assignee",
|
|
4195
4240
|
"wake_assignee_on_accept"
|
|
4196
4241
|
];
|
|
4242
|
+
var ISSUE_WATCHDOG_DISCOVERY_KINDS = ["product_bug", "platform_bug"];
|
|
4197
4243
|
var ISSUE_SURFACE_VISIBILITIES = ["default", "plugin_operation"];
|
|
4198
4244
|
var ISSUE_RECOVERY_ACTION_KINDS = [
|
|
4199
4245
|
"missing_disposition",
|
|
4200
4246
|
"stranded_assigned_issue",
|
|
4247
|
+
"workspace_validation",
|
|
4248
|
+
"configuration_validation",
|
|
4201
4249
|
"active_run_watchdog",
|
|
4202
4250
|
"issue_graph_liveness"
|
|
4203
4251
|
];
|
|
@@ -4224,7 +4272,11 @@ var ISSUE_RECOVERY_ACTION_OUTCOMES = [
|
|
|
4224
4272
|
var ISSUE_TREE_CONTROL_MODES = ["pause", "resume", "cancel", "restore"];
|
|
4225
4273
|
var ISSUE_TREE_HOLD_RELEASE_POLICY_STRATEGIES = ["manual", "after_active_runs_finish"];
|
|
4226
4274
|
var ISSUE_CONTINUATION_SUMMARY_DOCUMENT_KEY = "continuation-summary";
|
|
4227
|
-
var
|
|
4275
|
+
var PIPELINE_CASE_BODY_DOCUMENT_KEY = "pipeline-case-body";
|
|
4276
|
+
var SYSTEM_ISSUE_DOCUMENT_KEYS = [
|
|
4277
|
+
ISSUE_CONTINUATION_SUMMARY_DOCUMENT_KEY,
|
|
4278
|
+
PIPELINE_CASE_BODY_DOCUMENT_KEY
|
|
4279
|
+
];
|
|
4228
4280
|
var SYSTEM_ISSUE_DOCUMENT_KEY_SET = new Set(SYSTEM_ISSUE_DOCUMENT_KEYS);
|
|
4229
4281
|
var DOCUMENT_ANNOTATION_THREAD_STATUSES = ["open", "resolved"];
|
|
4230
4282
|
var DOCUMENT_ANNOTATION_ANCHOR_STATES = ["active", "stale", "orphaned"];
|
|
@@ -4235,6 +4287,43 @@ var DOCUMENT_ANNOTATION_ANCHOR_CONFIDENCES = [
|
|
|
4235
4287
|
"ambiguous",
|
|
4236
4288
|
"missing"
|
|
4237
4289
|
];
|
|
4290
|
+
var EXTERNAL_OBJECT_STATUS_CATEGORIES = [
|
|
4291
|
+
"unknown",
|
|
4292
|
+
"open",
|
|
4293
|
+
"waiting",
|
|
4294
|
+
"running",
|
|
4295
|
+
"succeeded",
|
|
4296
|
+
"failed",
|
|
4297
|
+
"blocked",
|
|
4298
|
+
"closed",
|
|
4299
|
+
"archived",
|
|
4300
|
+
"auth_required",
|
|
4301
|
+
"unreachable"
|
|
4302
|
+
];
|
|
4303
|
+
var EXTERNAL_OBJECT_STATUS_TONES = [
|
|
4304
|
+
"neutral",
|
|
4305
|
+
"info",
|
|
4306
|
+
"success",
|
|
4307
|
+
"warning",
|
|
4308
|
+
"danger",
|
|
4309
|
+
"muted"
|
|
4310
|
+
];
|
|
4311
|
+
var EXTERNAL_OBJECT_LIVENESS_STATES = [
|
|
4312
|
+
"unknown",
|
|
4313
|
+
"fresh",
|
|
4314
|
+
"stale",
|
|
4315
|
+
"auth_required",
|
|
4316
|
+
"unreachable"
|
|
4317
|
+
];
|
|
4318
|
+
var EXTERNAL_OBJECT_MENTION_SOURCE_KINDS = [
|
|
4319
|
+
"title",
|
|
4320
|
+
"description",
|
|
4321
|
+
"comment",
|
|
4322
|
+
"document",
|
|
4323
|
+
"property",
|
|
4324
|
+
"plugin"
|
|
4325
|
+
];
|
|
4326
|
+
var EXTERNAL_OBJECT_MENTION_CONFIDENCES = ["exact", "likely", "possible"];
|
|
4238
4327
|
var ISSUE_EXECUTION_POLICY_MODES = ["normal", "auto"];
|
|
4239
4328
|
var ISSUE_EXECUTION_STAGE_TYPES = ["review", "approval"];
|
|
4240
4329
|
var ISSUE_MONITOR_SCHEDULED_BY = ["assignee", "board"];
|
|
@@ -4269,14 +4358,40 @@ var PROJECT_STATUSES = [
|
|
|
4269
4358
|
];
|
|
4270
4359
|
var ENVIRONMENT_DRIVERS = ["local", "ssh", "sandbox", "plugin"];
|
|
4271
4360
|
var ENVIRONMENT_STATUSES = ["active", "archived"];
|
|
4272
|
-
var ENVIRONMENT_LEASE_STATUSES = ["active", "released", "expired", "failed", "retained"];
|
|
4361
|
+
var ENVIRONMENT_LEASE_STATUSES = ["active", "released", "expired", "failed", "retained", "pending_cleanup"];
|
|
4273
4362
|
var ENVIRONMENT_LEASE_CLEANUP_STATUSES = ["pending", "success", "failed"];
|
|
4363
|
+
var ENVIRONMENT_CUSTOM_IMAGE_TEMPLATE_KINDS = [
|
|
4364
|
+
"snapshot",
|
|
4365
|
+
"image",
|
|
4366
|
+
"provider_template",
|
|
4367
|
+
"unknown"
|
|
4368
|
+
];
|
|
4369
|
+
var ENVIRONMENT_CUSTOM_IMAGE_TEMPLATE_STATUSES = [
|
|
4370
|
+
"active",
|
|
4371
|
+
"superseded",
|
|
4372
|
+
"revoked",
|
|
4373
|
+
"failed"
|
|
4374
|
+
];
|
|
4375
|
+
var ENVIRONMENT_CUSTOM_IMAGE_SETUP_SESSION_STATUSES = [
|
|
4376
|
+
"starting",
|
|
4377
|
+
"waiting_for_user",
|
|
4378
|
+
"capturing",
|
|
4379
|
+
"promoted",
|
|
4380
|
+
"cancelled",
|
|
4381
|
+
"timed_out",
|
|
4382
|
+
"failed"
|
|
4383
|
+
];
|
|
4384
|
+
var ENVIRONMENT_CUSTOM_IMAGE_SETUP_CONNECTION_TYPES = [
|
|
4385
|
+
"ssh",
|
|
4386
|
+
"browser_terminal",
|
|
4387
|
+
"unknown"
|
|
4388
|
+
];
|
|
4274
4389
|
var ROUTINE_STATUSES = ["active", "paused", "archived"];
|
|
4275
4390
|
var ROUTINE_CONCURRENCY_POLICIES = ["coalesce_if_active", "always_enqueue", "skip_if_active"];
|
|
4276
4391
|
var ROUTINE_CATCH_UP_POLICIES = ["skip_missed", "enqueue_missed_with_cap"];
|
|
4277
4392
|
var ROUTINE_TRIGGER_KINDS = ["schedule", "webhook", "api"];
|
|
4278
4393
|
var ROUTINE_TRIGGER_SIGNING_MODES = ["bearer", "hmac_sha256", "github_hmac", "none"];
|
|
4279
|
-
var ROUTINE_VARIABLE_TYPES = ["text", "textarea", "number", "boolean", "select"];
|
|
4394
|
+
var ROUTINE_VARIABLE_TYPES = ["text", "textarea", "number", "boolean", "select", "date"];
|
|
4280
4395
|
var APPROVAL_TYPES = [
|
|
4281
4396
|
"hire_agent",
|
|
4282
4397
|
"approve_ceo_strategy",
|
|
@@ -4364,12 +4479,14 @@ var JOIN_REQUEST_TYPES = ["human", "agent"];
|
|
|
4364
4479
|
var JOIN_REQUEST_STATUSES = ["pending_approval", "approved", "rejected"];
|
|
4365
4480
|
var PERMISSION_KEYS = [
|
|
4366
4481
|
"agents:create",
|
|
4482
|
+
"skills:create",
|
|
4367
4483
|
"environments:manage",
|
|
4368
4484
|
"users:invite",
|
|
4369
4485
|
"users:manage_permissions",
|
|
4370
4486
|
"tasks:assign",
|
|
4371
4487
|
"tasks:assign_scope",
|
|
4372
4488
|
"tasks:manage_active_checkouts",
|
|
4489
|
+
"pipelines:write",
|
|
4373
4490
|
"joins:approve"
|
|
4374
4491
|
];
|
|
4375
4492
|
var PLUGIN_STATUSES = [
|
|
@@ -4439,6 +4556,10 @@ var PLUGIN_CAPABILITIES = [
|
|
|
4439
4556
|
"telemetry.track",
|
|
4440
4557
|
"database.namespace.migrate",
|
|
4441
4558
|
"database.namespace.write",
|
|
4559
|
+
"external.objects.detect",
|
|
4560
|
+
"external.objects.read",
|
|
4561
|
+
"external.objects.write",
|
|
4562
|
+
"external.objects.refresh",
|
|
4442
4563
|
// Plugin State
|
|
4443
4564
|
"plugin.state.read",
|
|
4444
4565
|
"plugin.state.write",
|
|
@@ -4502,6 +4623,8 @@ var PLUGIN_UI_SLOT_TYPES = [
|
|
|
4502
4623
|
"settingsPage",
|
|
4503
4624
|
"companySettingsPage"
|
|
4504
4625
|
];
|
|
4626
|
+
var WORKSPACE_OVERVIEW_DEFAULT_LIMIT = 50;
|
|
4627
|
+
var WORKSPACE_OVERVIEW_MAX_LIMIT = 100;
|
|
4505
4628
|
var PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS = [
|
|
4506
4629
|
"dashboard",
|
|
4507
4630
|
"onboarding",
|
|
@@ -4518,6 +4641,7 @@ var PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS = [
|
|
|
4518
4641
|
"costs",
|
|
4519
4642
|
"activity",
|
|
4520
4643
|
"inbox",
|
|
4644
|
+
"workspaces",
|
|
4521
4645
|
"design-guide",
|
|
4522
4646
|
"tests"
|
|
4523
4647
|
];
|
|
@@ -4527,7 +4651,8 @@ var PLUGIN_RESERVED_COMPANY_SETTINGS_ROUTE_SEGMENTS = [
|
|
|
4527
4651
|
"access",
|
|
4528
4652
|
"members",
|
|
4529
4653
|
"invites",
|
|
4530
|
-
"secrets"
|
|
4654
|
+
"secrets",
|
|
4655
|
+
"instance"
|
|
4531
4656
|
];
|
|
4532
4657
|
var PLUGIN_LAUNCHER_PLACEMENT_ZONES = [
|
|
4533
4658
|
"page",
|
|
@@ -4587,11 +4712,17 @@ var PLUGIN_STATE_SCOPE_KINDS = [
|
|
|
4587
4712
|
"run"
|
|
4588
4713
|
];
|
|
4589
4714
|
|
|
4590
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4715
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/adapter-type.js
|
|
4591
4716
|
var agentAdapterTypeSchema = external_exports.string().trim().min(1).default("process").describe(`Known built-in adapters: ${AGENT_ADAPTER_TYPES.join(", ")}. External adapters may register additional non-empty string types at runtime.`);
|
|
4592
4717
|
var optionalAgentAdapterTypeSchema = external_exports.string().trim().min(1).optional();
|
|
4593
4718
|
|
|
4594
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4719
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/trust-policy.js
|
|
4720
|
+
var TRUST_PRESETS = ["standard", "low_trust_review"];
|
|
4721
|
+
var LOW_TRUST_REVIEW_PRESET = "low_trust_review";
|
|
4722
|
+
var LOW_TRUST_REVIEW_PRESET_VERSION = 1;
|
|
4723
|
+
var LOW_TRUST_REVIEW_RAW_OUTPUT_DISPOSITION = "quarantine";
|
|
4724
|
+
|
|
4725
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/network-bind.js
|
|
4595
4726
|
function normalizeHost(host) {
|
|
4596
4727
|
const trimmed = host?.trim();
|
|
4597
4728
|
return trimmed ? trimmed : void 0;
|
|
@@ -4634,7 +4765,7 @@ function validateConfiguredBindMode(input) {
|
|
|
4634
4765
|
return errors;
|
|
4635
4766
|
}
|
|
4636
4767
|
|
|
4637
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4768
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/types/instance.js
|
|
4638
4769
|
var DAILY_RETENTION_PRESETS = [3, 7, 14];
|
|
4639
4770
|
var WEEKLY_RETENTION_PRESETS = [1, 2, 4];
|
|
4640
4771
|
var MONTHLY_RETENTION_PRESETS = [1, 3, 6];
|
|
@@ -4647,13 +4778,13 @@ var DEFAULT_BACKUP_RETENTION = {
|
|
|
4647
4778
|
monthlyMonths: 1
|
|
4648
4779
|
};
|
|
4649
4780
|
|
|
4650
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4651
|
-
var COMPANY_SEARCH_SCOPES = ["all", "issues", "comments", "documents", "agents", "projects"];
|
|
4781
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/types/search.js
|
|
4782
|
+
var COMPANY_SEARCH_SCOPES = ["all", "issues", "comments", "documents", "artifacts", "agents", "projects"];
|
|
4652
4783
|
|
|
4653
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4784
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/types/resource-memberships.js
|
|
4654
4785
|
var RESOURCE_MEMBERSHIP_STATES = ["joined", "left"];
|
|
4655
4786
|
|
|
4656
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4787
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/sidebar-preferences.js
|
|
4657
4788
|
var sidebarOrderedIdSchema = external_exports.string().uuid();
|
|
4658
4789
|
var sidebarOrderPreferenceSchema = external_exports.object({
|
|
4659
4790
|
orderedIds: external_exports.array(sidebarOrderedIdSchema),
|
|
@@ -4663,13 +4794,19 @@ var upsertSidebarOrderPreferenceSchema = external_exports.object({
|
|
|
4663
4794
|
orderedIds: external_exports.array(sidebarOrderedIdSchema)
|
|
4664
4795
|
});
|
|
4665
4796
|
|
|
4666
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4797
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/resource-memberships.js
|
|
4667
4798
|
var resourceMembershipStateSchema = external_exports.enum(RESOURCE_MEMBERSHIP_STATES);
|
|
4668
4799
|
var updateResourceMembershipSchema = external_exports.object({
|
|
4669
|
-
state: resourceMembershipStateSchema
|
|
4800
|
+
state: resourceMembershipStateSchema.optional(),
|
|
4801
|
+
starred: external_exports.boolean().optional()
|
|
4802
|
+
}).refine((value) => value.state !== void 0 || value.starred !== void 0, {
|
|
4803
|
+
message: "state or starred is required"
|
|
4804
|
+
}).refine((value) => !(value.state === "left" && value.starred === true), {
|
|
4805
|
+
message: "starred resources must be joined",
|
|
4806
|
+
path: ["starred"]
|
|
4670
4807
|
});
|
|
4671
4808
|
|
|
4672
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4809
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/execution-workspace.js
|
|
4673
4810
|
var executionWorkspaceStatusSchema = external_exports.enum([
|
|
4674
4811
|
"active",
|
|
4675
4812
|
"idle",
|
|
@@ -4677,6 +4814,23 @@ var executionWorkspaceStatusSchema = external_exports.enum([
|
|
|
4677
4814
|
"archived",
|
|
4678
4815
|
"cleanup_failed"
|
|
4679
4816
|
]);
|
|
4817
|
+
var workspaceOverviewStatusFilterSchema = external_exports.preprocess((value) => {
|
|
4818
|
+
if (value === void 0 || value === null)
|
|
4819
|
+
return void 0;
|
|
4820
|
+
const rawValues = Array.isArray(value) ? value : [value];
|
|
4821
|
+
const statuses = rawValues.flatMap((entry) => {
|
|
4822
|
+
if (typeof entry !== "string")
|
|
4823
|
+
return [];
|
|
4824
|
+
return entry.split(",").map((part) => part.trim()).filter(Boolean);
|
|
4825
|
+
});
|
|
4826
|
+
return statuses.length > 0 ? statuses : void 0;
|
|
4827
|
+
}, external_exports.array(executionWorkspaceStatusSchema).optional());
|
|
4828
|
+
var workspaceOverviewQuerySchema = external_exports.object({
|
|
4829
|
+
projectId: external_exports.string().uuid().optional(),
|
|
4830
|
+
status: workspaceOverviewStatusFilterSchema,
|
|
4831
|
+
limit: external_exports.coerce.number().int().min(1).max(WORKSPACE_OVERVIEW_MAX_LIMIT).optional().default(WORKSPACE_OVERVIEW_DEFAULT_LIMIT),
|
|
4832
|
+
offset: external_exports.coerce.number().int().min(0).optional().default(0)
|
|
4833
|
+
}).strict();
|
|
4680
4834
|
var executionWorkspaceConfigSchema = external_exports.object({
|
|
4681
4835
|
environmentId: external_exports.string().uuid().optional().nullable(),
|
|
4682
4836
|
provisionCommand: external_exports.string().optional().nullable(),
|
|
@@ -4789,14 +4943,14 @@ var updateExecutionWorkspaceSchema = external_exports.object({
|
|
|
4789
4943
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
4790
4944
|
}).strict();
|
|
4791
4945
|
|
|
4792
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4946
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/types/feedback.js
|
|
4793
4947
|
var FEEDBACK_TARGET_TYPES = ["issue_comment", "issue_document_revision"];
|
|
4794
4948
|
var FEEDBACK_VOTE_VALUES = ["up", "down"];
|
|
4795
4949
|
var FEEDBACK_DATA_SHARING_PREFERENCES = ["allowed", "not_allowed", "prompt"];
|
|
4796
4950
|
var DEFAULT_FEEDBACK_DATA_SHARING_PREFERENCE = "prompt";
|
|
4797
4951
|
var FEEDBACK_TRACE_STATUSES = ["local_only", "pending", "sent", "failed"];
|
|
4798
4952
|
|
|
4799
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4953
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/feedback.js
|
|
4800
4954
|
var feedbackTargetTypeSchema = external_exports.enum(FEEDBACK_TARGET_TYPES);
|
|
4801
4955
|
var feedbackTraceStatusSchema = external_exports.enum(FEEDBACK_TRACE_STATUSES);
|
|
4802
4956
|
var feedbackVoteValueSchema = external_exports.enum(FEEDBACK_VOTE_VALUES);
|
|
@@ -4809,7 +4963,7 @@ var upsertIssueFeedbackVoteSchema = external_exports.object({
|
|
|
4809
4963
|
allowSharing: external_exports.boolean().optional()
|
|
4810
4964
|
});
|
|
4811
4965
|
|
|
4812
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4966
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/instance.js
|
|
4813
4967
|
function presetSchema(presets, label) {
|
|
4814
4968
|
return external_exports.number().refine((v) => presets.includes(v), { message: `${label} must be one of: ${presets.join(", ")}` });
|
|
4815
4969
|
}
|
|
@@ -4822,24 +4976,46 @@ var instanceGeneralSettingsSchema = external_exports.object({
|
|
|
4822
4976
|
censorUsernameInLogs: external_exports.boolean().default(false),
|
|
4823
4977
|
keyboardShortcuts: external_exports.boolean().default(false),
|
|
4824
4978
|
feedbackDataSharingPreference: feedbackDataSharingPreferenceSchema.default(DEFAULT_FEEDBACK_DATA_SHARING_PREFERENCE),
|
|
4825
|
-
backupRetention: backupRetentionPolicySchema.default(DEFAULT_BACKUP_RETENTION)
|
|
4979
|
+
backupRetention: backupRetentionPolicySchema.default(DEFAULT_BACKUP_RETENTION),
|
|
4980
|
+
// Execution policy. Absent/"any" = unrestricted; "kubernetes" forces the
|
|
4981
|
+
// Kubernetes sandbox provider and denies local/ssh execution (cloud_tenant).
|
|
4982
|
+
executionMode: external_exports.enum(["kubernetes", "any"]).optional()
|
|
4826
4983
|
}).strict();
|
|
4827
4984
|
var patchInstanceGeneralSettingsSchema = instanceGeneralSettingsSchema.partial();
|
|
4828
4985
|
var instanceExperimentalSettingsSchema = external_exports.object({
|
|
4829
4986
|
enableEnvironments: external_exports.boolean().default(false),
|
|
4830
4987
|
enableIsolatedWorkspaces: external_exports.boolean().default(false),
|
|
4988
|
+
enableStreamlinedLeftNavigation: external_exports.boolean().default(true),
|
|
4989
|
+
enablePipelines: external_exports.boolean().default(false),
|
|
4990
|
+
enableConferenceRoomChat: external_exports.boolean().default(false),
|
|
4991
|
+
enableTaskWatchdogs: external_exports.boolean().default(false),
|
|
4831
4992
|
enableIssuePlanDecompositions: external_exports.boolean().default(false),
|
|
4993
|
+
enableExperimentalFileViewer: external_exports.boolean().default(false),
|
|
4832
4994
|
enableCloudSync: external_exports.boolean().default(false),
|
|
4995
|
+
enableExternalObjects: external_exports.boolean().default(false),
|
|
4996
|
+
enableServerInfoDebugView: external_exports.boolean().default(false),
|
|
4833
4997
|
autoRestartDevServerWhenIdle: external_exports.boolean().default(false),
|
|
4834
4998
|
enableIssueGraphLivenessAutoRecovery: external_exports.boolean().default(false),
|
|
4999
|
+
enableWorkspaceBranchReconcileForward: external_exports.boolean().default(false),
|
|
4835
5000
|
issueGraphLivenessAutoRecoveryLookbackHours: external_exports.number().int().min(MIN_ISSUE_GRAPH_LIVENESS_AUTO_RECOVERY_LOOKBACK_HOURS).max(MAX_ISSUE_GRAPH_LIVENESS_AUTO_RECOVERY_LOOKBACK_HOURS).default(DEFAULT_ISSUE_GRAPH_LIVENESS_AUTO_RECOVERY_LOOKBACK_HOURS)
|
|
4836
5001
|
}).strict();
|
|
4837
5002
|
var patchInstanceExperimentalSettingsSchema = instanceExperimentalSettingsSchema.partial();
|
|
5003
|
+
var patchInstanceSettingsSchema = external_exports.object({
|
|
5004
|
+
defaultEnvironmentId: external_exports.string().uuid().nullable().optional()
|
|
5005
|
+
}).strict();
|
|
4838
5006
|
var issueGraphLivenessAutoRecoveryRequestSchema = external_exports.object({
|
|
4839
5007
|
lookbackHours: external_exports.number().int().min(MIN_ISSUE_GRAPH_LIVENESS_AUTO_RECOVERY_LOOKBACK_HOURS).max(MAX_ISSUE_GRAPH_LIVENESS_AUTO_RECOVERY_LOOKBACK_HOURS).optional()
|
|
4840
5008
|
}).strict();
|
|
5009
|
+
var instanceSettingsSchema = external_exports.object({
|
|
5010
|
+
id: external_exports.string().uuid(),
|
|
5011
|
+
defaultEnvironmentId: external_exports.string().uuid().nullable(),
|
|
5012
|
+
general: instanceGeneralSettingsSchema,
|
|
5013
|
+
experimental: instanceExperimentalSettingsSchema,
|
|
5014
|
+
createdAt: external_exports.union([external_exports.date(), external_exports.string().datetime()]),
|
|
5015
|
+
updatedAt: external_exports.union([external_exports.date(), external_exports.string().datetime()])
|
|
5016
|
+
}).strict();
|
|
4841
5017
|
|
|
4842
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
5018
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/budget.js
|
|
4843
5019
|
var upsertBudgetPolicySchema = external_exports.object({
|
|
4844
5020
|
scopeType: external_exports.enum(BUDGET_SCOPE_TYPES),
|
|
4845
5021
|
scopeId: external_exports.string().uuid(),
|
|
@@ -4865,7 +5041,7 @@ var resolveBudgetIncidentSchema = external_exports.object({
|
|
|
4865
5041
|
}
|
|
4866
5042
|
});
|
|
4867
5043
|
|
|
4868
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
5044
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/company.js
|
|
4869
5045
|
var logoAssetIdSchema = external_exports.string().uuid().nullable().optional();
|
|
4870
5046
|
var brandColorSchema = external_exports.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
|
|
4871
5047
|
var feedbackDataSharingTermsVersionSchema = external_exports.string().min(1).nullable().optional();
|
|
@@ -4874,7 +5050,8 @@ var createCompanySchema = external_exports.object({
|
|
|
4874
5050
|
name: external_exports.string().min(1),
|
|
4875
5051
|
description: external_exports.string().optional().nullable(),
|
|
4876
5052
|
budgetMonthlyCents: external_exports.number().int().nonnegative().optional().default(0),
|
|
4877
|
-
attachmentMaxBytes: attachmentMaxBytesSchema.optional()
|
|
5053
|
+
attachmentMaxBytes: attachmentMaxBytesSchema.optional(),
|
|
5054
|
+
defaultResponsibleUserId: external_exports.string().min(1).nullable().optional()
|
|
4878
5055
|
});
|
|
4879
5056
|
var updateCompanySchema = createCompanySchema.partial().extend({
|
|
4880
5057
|
status: external_exports.enum(COMPANY_STATUSES).optional(),
|
|
@@ -4895,109 +5072,622 @@ var updateCompanyBrandingSchema = external_exports.object({
|
|
|
4895
5072
|
logoAssetId: logoAssetIdSchema
|
|
4896
5073
|
}).strict().refine((value) => value.name !== void 0 || value.description !== void 0 || value.brandColor !== void 0 || value.logoAssetId !== void 0, "At least one branding field must be provided");
|
|
4897
5074
|
|
|
4898
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
4899
|
-
var
|
|
4900
|
-
var
|
|
4901
|
-
var
|
|
4902
|
-
var
|
|
4903
|
-
|
|
5075
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/secret.js
|
|
5076
|
+
var secretKeySchema = external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9_.-]+$/);
|
|
5077
|
+
var secretVersionSelectorSchema = external_exports.union([external_exports.literal("latest"), external_exports.number().int().positive()]);
|
|
5078
|
+
var creatableSecretStatusSchema = external_exports.enum(["active", "disabled", "archived"]);
|
|
5079
|
+
var envBindingPlainSchema = external_exports.object({
|
|
5080
|
+
type: external_exports.literal("plain"),
|
|
5081
|
+
value: external_exports.string()
|
|
5082
|
+
});
|
|
5083
|
+
var envBindingSecretRefSchema = external_exports.object({
|
|
5084
|
+
type: external_exports.literal("secret_ref"),
|
|
5085
|
+
secretId: external_exports.string().uuid(),
|
|
5086
|
+
version: secretVersionSelectorSchema.optional()
|
|
5087
|
+
});
|
|
5088
|
+
var envBindingUserSecretRefSchema = external_exports.object({
|
|
5089
|
+
type: external_exports.literal("user_secret_ref"),
|
|
5090
|
+
key: secretKeySchema,
|
|
5091
|
+
version: secretVersionSelectorSchema.optional(),
|
|
5092
|
+
required: external_exports.boolean().optional().default(true),
|
|
5093
|
+
allowMissingOverride: external_exports.boolean().optional().default(false)
|
|
5094
|
+
});
|
|
5095
|
+
var envBindingSchema = external_exports.union([
|
|
5096
|
+
external_exports.string(),
|
|
5097
|
+
envBindingPlainSchema,
|
|
5098
|
+
envBindingSecretRefSchema,
|
|
5099
|
+
envBindingUserSecretRefSchema
|
|
5100
|
+
]);
|
|
5101
|
+
var envConfigSchema = external_exports.record(external_exports.string(), envBindingSchema);
|
|
5102
|
+
var createSecretSchema = external_exports.object({
|
|
4904
5103
|
name: external_exports.string().min(1),
|
|
5104
|
+
key: secretKeySchema.optional(),
|
|
5105
|
+
provider: external_exports.enum(SECRET_PROVIDERS).optional(),
|
|
5106
|
+
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
5107
|
+
managedMode: external_exports.enum(SECRET_MANAGED_MODES).optional(),
|
|
5108
|
+
value: external_exports.string().min(1).optional().nullable(),
|
|
4905
5109
|
description: external_exports.string().optional().nullable(),
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
}
|
|
4920
|
-
|
|
5110
|
+
externalRef: external_exports.string().optional().nullable(),
|
|
5111
|
+
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
5112
|
+
providerVersionRef: external_exports.string().optional().nullable()
|
|
5113
|
+
}).superRefine((value, ctx) => {
|
|
5114
|
+
if ((value.managedMode ?? "paperclip_managed") === "external_reference") {
|
|
5115
|
+
if (!value.externalRef?.trim()) {
|
|
5116
|
+
ctx.addIssue({
|
|
5117
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5118
|
+
path: ["externalRef"],
|
|
5119
|
+
message: "External reference secrets require externalRef"
|
|
5120
|
+
});
|
|
5121
|
+
}
|
|
5122
|
+
return;
|
|
5123
|
+
}
|
|
5124
|
+
if (value.externalRef?.trim()) {
|
|
5125
|
+
ctx.addIssue({
|
|
5126
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5127
|
+
path: ["externalRef"],
|
|
5128
|
+
message: "Managed secrets cannot set externalRef"
|
|
5129
|
+
});
|
|
5130
|
+
}
|
|
5131
|
+
if (!value.value?.trim()) {
|
|
5132
|
+
ctx.addIssue({
|
|
5133
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5134
|
+
path: ["value"],
|
|
5135
|
+
message: "Managed secrets require value"
|
|
5136
|
+
});
|
|
5137
|
+
}
|
|
5138
|
+
});
|
|
5139
|
+
function requireSecretRotationInput(value, ctx) {
|
|
5140
|
+
if (!value.value?.trim() && !value.externalRef?.trim() && value.providerVersionRef == null && value.providerConfigId == null) {
|
|
5141
|
+
ctx.addIssue({
|
|
5142
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5143
|
+
path: ["value"],
|
|
5144
|
+
message: "Secret rotation requires value, externalRef, providerVersionRef, or providerConfigId"
|
|
5145
|
+
});
|
|
5146
|
+
}
|
|
5147
|
+
}
|
|
5148
|
+
var rotateSecretSchema = external_exports.object({
|
|
5149
|
+
value: external_exports.string().min(1).optional().nullable(),
|
|
5150
|
+
externalRef: external_exports.string().optional().nullable(),
|
|
5151
|
+
providerVersionRef: external_exports.string().optional().nullable(),
|
|
5152
|
+
providerConfigId: external_exports.string().uuid().optional().nullable()
|
|
5153
|
+
}).superRefine(requireSecretRotationInput);
|
|
5154
|
+
var updateSecretSchema = external_exports.object({
|
|
4921
5155
|
name: external_exports.string().min(1).optional(),
|
|
5156
|
+
key: secretKeySchema.optional(),
|
|
5157
|
+
status: external_exports.enum(SECRET_STATUSES).optional(),
|
|
5158
|
+
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
4922
5159
|
description: external_exports.string().optional().nullable(),
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
4926
|
-
}).strict();
|
|
4927
|
-
|
|
4928
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.529.0/node_modules/@paperclipai/shared/dist/validators/company-skill.js
|
|
4929
|
-
var companySkillSourceTypeSchema = external_exports.enum(["local_path", "github", "url", "catalog", "skills_sh"]);
|
|
4930
|
-
var companySkillTrustLevelSchema = external_exports.enum(["markdown_only", "assets", "scripts_executables"]);
|
|
4931
|
-
var companySkillCompatibilitySchema = external_exports.enum(["compatible", "unknown", "invalid"]);
|
|
4932
|
-
var companySkillSourceBadgeSchema = external_exports.enum(["paperclip", "github", "local", "url", "catalog", "skills_sh"]);
|
|
4933
|
-
var companySkillFileInventoryEntrySchema = external_exports.object({
|
|
4934
|
-
path: external_exports.string().min(1),
|
|
4935
|
-
kind: external_exports.enum(["skill", "markdown", "reference", "script", "asset", "other"])
|
|
5160
|
+
externalRef: external_exports.string().optional().nullable(),
|
|
5161
|
+
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
4936
5162
|
});
|
|
4937
|
-
var
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
slug: external_exports.string().min(1),
|
|
4942
|
-
name: external_exports.string().min(1),
|
|
4943
|
-
description: external_exports.string().nullable(),
|
|
4944
|
-
markdown: external_exports.string(),
|
|
4945
|
-
sourceType: companySkillSourceTypeSchema,
|
|
4946
|
-
sourceLocator: external_exports.string().nullable(),
|
|
4947
|
-
sourceRef: external_exports.string().nullable(),
|
|
4948
|
-
trustLevel: companySkillTrustLevelSchema,
|
|
4949
|
-
compatibility: companySkillCompatibilitySchema,
|
|
4950
|
-
fileInventory: external_exports.array(companySkillFileInventoryEntrySchema).default([]),
|
|
4951
|
-
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).nullable(),
|
|
4952
|
-
createdAt: external_exports.coerce.date(),
|
|
4953
|
-
updatedAt: external_exports.coerce.date()
|
|
5163
|
+
var secretBindingTargetSchema = external_exports.object({
|
|
5164
|
+
targetType: external_exports.enum(SECRET_BINDING_TARGET_TYPES),
|
|
5165
|
+
targetId: external_exports.string().min(1),
|
|
5166
|
+
configPath: external_exports.string().min(1)
|
|
4954
5167
|
});
|
|
4955
|
-
var
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
sourceBadge: companySkillSourceBadgeSchema,
|
|
4961
|
-
catalogKind: external_exports.enum(["bundled", "optional"]).nullable(),
|
|
4962
|
-
originHash: external_exports.string().nullable(),
|
|
4963
|
-
packageName: external_exports.string().nullable(),
|
|
4964
|
-
packageVersion: external_exports.string().nullable()
|
|
5168
|
+
var createSecretBindingSchema = secretBindingTargetSchema.extend({
|
|
5169
|
+
secretId: external_exports.string().uuid(),
|
|
5170
|
+
versionSelector: secretVersionSelectorSchema.default("latest"),
|
|
5171
|
+
required: external_exports.boolean().default(true),
|
|
5172
|
+
label: external_exports.string().optional().nullable()
|
|
4965
5173
|
});
|
|
4966
|
-
var
|
|
4967
|
-
|
|
4968
|
-
name: external_exports.string().min(1),
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
5174
|
+
var createUserSecretDefinitionSchema = external_exports.object({
|
|
5175
|
+
key: secretKeySchema,
|
|
5176
|
+
name: external_exports.string().trim().min(1).max(160),
|
|
5177
|
+
description: external_exports.string().trim().max(500).optional().nullable(),
|
|
5178
|
+
status: creatableSecretStatusSchema.optional(),
|
|
5179
|
+
provider: external_exports.enum(SECRET_PROVIDERS).optional(),
|
|
5180
|
+
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
5181
|
+
managedMode: external_exports.enum(SECRET_MANAGED_MODES).optional(),
|
|
5182
|
+
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
5183
|
+
usageGuidance: external_exports.string().trim().max(1e3).optional().nullable()
|
|
4973
5184
|
});
|
|
4974
|
-
var
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
5185
|
+
var updateUserSecretDefinitionSchema = external_exports.object({
|
|
5186
|
+
name: external_exports.string().trim().min(1).max(160).optional(),
|
|
5187
|
+
description: external_exports.string().trim().max(500).optional().nullable(),
|
|
5188
|
+
status: external_exports.enum(SECRET_STATUSES).optional(),
|
|
5189
|
+
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
5190
|
+
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
5191
|
+
usageGuidance: external_exports.string().trim().max(1e3).optional().nullable()
|
|
4981
5192
|
});
|
|
4982
|
-
var
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5193
|
+
var createUserSecretValueSchema = external_exports.object({
|
|
5194
|
+
definitionKey: secretKeySchema.optional(),
|
|
5195
|
+
definitionId: external_exports.string().uuid().optional(),
|
|
5196
|
+
value: external_exports.string().min(1).optional().nullable(),
|
|
5197
|
+
externalRef: external_exports.string().optional().nullable(),
|
|
5198
|
+
providerVersionRef: external_exports.string().optional().nullable(),
|
|
5199
|
+
providerConfigId: external_exports.string().uuid().optional().nullable()
|
|
5200
|
+
}).superRefine((value, ctx) => {
|
|
5201
|
+
if (!value.definitionKey && !value.definitionId) {
|
|
5202
|
+
ctx.addIssue({
|
|
5203
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5204
|
+
path: ["definitionId"],
|
|
5205
|
+
message: "User secret value requires definitionId or definitionKey"
|
|
5206
|
+
});
|
|
5207
|
+
}
|
|
5208
|
+
if (!value.value?.trim() && !value.externalRef?.trim()) {
|
|
5209
|
+
ctx.addIssue({
|
|
5210
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5211
|
+
path: ["value"],
|
|
5212
|
+
message: "User secret value requires value or externalRef"
|
|
5213
|
+
});
|
|
5214
|
+
}
|
|
5215
|
+
});
|
|
5216
|
+
var updateUserSecretValueSchema = external_exports.object({
|
|
5217
|
+
status: external_exports.enum(SECRET_STATUSES).optional(),
|
|
5218
|
+
value: external_exports.string().min(1).optional().nullable(),
|
|
5219
|
+
externalRef: external_exports.string().min(1).optional().nullable(),
|
|
5220
|
+
providerVersionRef: external_exports.string().min(1).optional().nullable(),
|
|
5221
|
+
providerConfigId: external_exports.string().uuid().optional().nullable()
|
|
5222
|
+
});
|
|
5223
|
+
var rotateUserSecretValueSchema = external_exports.object({
|
|
5224
|
+
value: external_exports.string().min(1).optional().nullable(),
|
|
5225
|
+
externalRef: external_exports.string().min(1).optional().nullable(),
|
|
5226
|
+
providerVersionRef: external_exports.string().min(1).optional().nullable(),
|
|
5227
|
+
providerConfigId: external_exports.string().uuid().optional().nullable()
|
|
5228
|
+
}).superRefine(requireSecretRotationInput);
|
|
5229
|
+
var createUserSecretDeclarationSchema = secretBindingTargetSchema.extend({
|
|
5230
|
+
definitionKey: secretKeySchema,
|
|
5231
|
+
envKey: external_exports.string().trim().min(1),
|
|
5232
|
+
versionSelector: secretVersionSelectorSchema.default("latest"),
|
|
5233
|
+
required: external_exports.boolean().default(true),
|
|
5234
|
+
allowMissingOverride: external_exports.boolean().default(false),
|
|
5235
|
+
label: external_exports.string().optional().nullable()
|
|
5236
|
+
});
|
|
5237
|
+
var safeShortText = external_exports.string().trim().min(1).max(160);
|
|
5238
|
+
var optionalSafeShortText = safeShortText.optional().nullable();
|
|
5239
|
+
var deniedProviderConfigKeyPattern = /^(access[-_]?key([-_]?id)?|secret[-_]?access[-_]?key|secret[-_]?key|token|password|passwd|credential|credentials|private[-_]?key|pem|jwt|session[-_]?token|service[-_]?account([-_]?json)?|client[-_]?secret|secret[-_]?id|unseal[-_]?key|recovery[-_]?key|key[-_]?file([-_]?path)?|token[-_]?file([-_]?path)?)$/i;
|
|
5240
|
+
function rejectSensitiveProviderConfigKeys(value, ctx) {
|
|
5241
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
5242
|
+
return;
|
|
5243
|
+
for (const key of Object.keys(value)) {
|
|
5244
|
+
if (!deniedProviderConfigKeyPattern.test(key))
|
|
5245
|
+
continue;
|
|
5246
|
+
ctx.addIssue({
|
|
5247
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5248
|
+
path: ["config", key],
|
|
5249
|
+
message: `Provider vault config cannot persist sensitive field: ${key}`
|
|
5250
|
+
});
|
|
5251
|
+
}
|
|
5252
|
+
}
|
|
5253
|
+
var localEncryptedProviderConfigSchema = external_exports.object({
|
|
5254
|
+
backupReminderAcknowledged: external_exports.boolean().optional()
|
|
5255
|
+
}).strict();
|
|
5256
|
+
var awsSecretsManagerProviderConfigSchema = external_exports.object({
|
|
5257
|
+
region: external_exports.string().trim().regex(/^[a-z]{2}(?:-gov)?-[a-z]+-\d+$/, "Invalid AWS region"),
|
|
5258
|
+
namespace: optionalSafeShortText,
|
|
5259
|
+
secretNamePrefix: optionalSafeShortText,
|
|
5260
|
+
kmsKeyId: external_exports.string().trim().min(1).max(512).optional().nullable(),
|
|
5261
|
+
ownerTag: optionalSafeShortText,
|
|
5262
|
+
environmentTag: optionalSafeShortText
|
|
5263
|
+
}).strict();
|
|
5264
|
+
var gcpSecretManagerProviderConfigSchema = external_exports.object({
|
|
5265
|
+
projectId: external_exports.string().trim().min(1).max(128).regex(/^[a-z][a-z0-9-]{4,127}$/).optional().nullable(),
|
|
5266
|
+
location: optionalSafeShortText,
|
|
5267
|
+
namespace: optionalSafeShortText,
|
|
5268
|
+
secretNamePrefix: optionalSafeShortText
|
|
5269
|
+
}).strict();
|
|
5270
|
+
var vaultAddressSchema = external_exports.preprocess((value) => typeof value === "string" ? value.trim() : value, external_exports.string().url().superRefine((value, ctx) => {
|
|
5271
|
+
let url;
|
|
5272
|
+
try {
|
|
5273
|
+
url = new URL(value);
|
|
5274
|
+
} catch {
|
|
5275
|
+
return;
|
|
5276
|
+
}
|
|
5277
|
+
const hasPath = url.pathname !== "" && url.pathname !== "/";
|
|
5278
|
+
if (url.protocol !== "http:" && url.protocol !== "https:" || url.username || url.password || url.search || url.hash || hasPath) {
|
|
5279
|
+
ctx.addIssue({
|
|
5280
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5281
|
+
message: "Vault address must be an origin-only HTTP(S) URL without credentials, path, query, or fragment"
|
|
5282
|
+
});
|
|
5283
|
+
}
|
|
5284
|
+
}).transform((value) => new URL(value).origin));
|
|
5285
|
+
function rejectUnsafeVaultAddress(value, ctx) {
|
|
5286
|
+
if (value === void 0 || value === null)
|
|
5287
|
+
return;
|
|
5288
|
+
const parsed = vaultAddressSchema.safeParse(value);
|
|
5289
|
+
if (parsed.success)
|
|
5290
|
+
return;
|
|
5291
|
+
for (const issue of parsed.error.issues) {
|
|
5292
|
+
ctx.addIssue({
|
|
5293
|
+
...issue,
|
|
5294
|
+
path: ["config", "address", ...issue.path]
|
|
5295
|
+
});
|
|
5296
|
+
}
|
|
5297
|
+
}
|
|
5298
|
+
var vaultProviderConfigSchema = external_exports.object({
|
|
5299
|
+
address: vaultAddressSchema.optional().nullable(),
|
|
5300
|
+
namespace: optionalSafeShortText,
|
|
5301
|
+
mountPath: optionalSafeShortText,
|
|
5302
|
+
secretPathPrefix: optionalSafeShortText
|
|
5303
|
+
}).strict();
|
|
5304
|
+
var secretProviderConfigPayloadSchema = external_exports.discriminatedUnion("provider", [
|
|
5305
|
+
external_exports.object({ provider: external_exports.literal("local_encrypted"), config: localEncryptedProviderConfigSchema }),
|
|
5306
|
+
external_exports.object({ provider: external_exports.literal("aws_secrets_manager"), config: awsSecretsManagerProviderConfigSchema }),
|
|
5307
|
+
external_exports.object({ provider: external_exports.literal("gcp_secret_manager"), config: gcpSecretManagerProviderConfigSchema }),
|
|
5308
|
+
external_exports.object({ provider: external_exports.literal("vault"), config: vaultProviderConfigSchema })
|
|
5309
|
+
]);
|
|
5310
|
+
var createSecretProviderConfigSchema = external_exports.object({
|
|
5311
|
+
provider: external_exports.enum(SECRET_PROVIDERS),
|
|
5312
|
+
displayName: external_exports.string().trim().min(1).max(120),
|
|
5313
|
+
status: external_exports.enum(SECRET_PROVIDER_CONFIG_STATUSES).optional(),
|
|
5314
|
+
isDefault: external_exports.boolean().optional(),
|
|
5315
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()).default({})
|
|
5316
|
+
}).superRefine((value, ctx) => {
|
|
5317
|
+
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
5318
|
+
const parsed = secretProviderConfigPayloadSchema.safeParse({
|
|
5319
|
+
provider: value.provider,
|
|
5320
|
+
config: value.config
|
|
5321
|
+
});
|
|
5322
|
+
if (!parsed.success) {
|
|
5323
|
+
for (const issue of parsed.error.issues) {
|
|
5324
|
+
ctx.addIssue({
|
|
5325
|
+
...issue,
|
|
5326
|
+
path: issue.path[0] === "config" ? issue.path : ["config", ...issue.path]
|
|
5327
|
+
});
|
|
5328
|
+
}
|
|
5329
|
+
}
|
|
5330
|
+
const status = value.status ?? (["gcp_secret_manager", "vault"].includes(value.provider) ? "coming_soon" : "ready");
|
|
5331
|
+
if ((value.provider === "gcp_secret_manager" || value.provider === "vault") && status !== "coming_soon" && status !== "disabled") {
|
|
5332
|
+
ctx.addIssue({
|
|
5333
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5334
|
+
path: ["status"],
|
|
5335
|
+
message: `${value.provider} provider vaults are locked while coming soon`
|
|
5336
|
+
});
|
|
5337
|
+
}
|
|
5338
|
+
if ((status === "coming_soon" || status === "disabled") && value.isDefault) {
|
|
5339
|
+
ctx.addIssue({
|
|
5340
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5341
|
+
path: ["isDefault"],
|
|
5342
|
+
message: "Only ready or warning provider vaults can be default"
|
|
5343
|
+
});
|
|
5344
|
+
}
|
|
5345
|
+
});
|
|
5346
|
+
var updateSecretProviderConfigSchema = external_exports.object({
|
|
5347
|
+
displayName: external_exports.string().trim().min(1).max(120).optional(),
|
|
5348
|
+
status: external_exports.enum(SECRET_PROVIDER_CONFIG_STATUSES).optional(),
|
|
5349
|
+
isDefault: external_exports.boolean().optional(),
|
|
5350
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
5351
|
+
}).superRefine((value, ctx) => {
|
|
5352
|
+
if (value.config !== void 0) {
|
|
5353
|
+
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
5354
|
+
rejectUnsafeVaultAddress(value.config.address, ctx);
|
|
5355
|
+
}
|
|
5356
|
+
if ((value.status === "coming_soon" || value.status === "disabled") && value.isDefault) {
|
|
5357
|
+
ctx.addIssue({
|
|
5358
|
+
code: external_exports.ZodIssueCode.custom,
|
|
5359
|
+
path: ["isDefault"],
|
|
5360
|
+
message: "Only ready or warning provider vaults can be default"
|
|
5361
|
+
});
|
|
5362
|
+
}
|
|
5363
|
+
});
|
|
5364
|
+
var remoteSecretImportPreviewSchema = external_exports.object({
|
|
5365
|
+
providerConfigId: external_exports.string().uuid(),
|
|
5366
|
+
query: external_exports.string().trim().max(200).optional().nullable(),
|
|
5367
|
+
nextToken: external_exports.string().trim().min(1).max(4096).optional().nullable(),
|
|
5368
|
+
pageSize: external_exports.number().int().min(1).max(100).optional()
|
|
5369
|
+
});
|
|
5370
|
+
var secretProviderConfigDiscoveryPreviewSchema = external_exports.object({
|
|
5371
|
+
provider: external_exports.enum(SECRET_PROVIDERS),
|
|
5372
|
+
config: external_exports.record(external_exports.unknown()).default({}),
|
|
5373
|
+
query: external_exports.string().trim().max(200).optional().nullable(),
|
|
5374
|
+
nextToken: external_exports.string().trim().min(1).max(4096).optional().nullable(),
|
|
5375
|
+
pageSize: external_exports.number().int().min(1).max(100).optional()
|
|
5376
|
+
}).superRefine((value, ctx) => {
|
|
5377
|
+
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
5378
|
+
const parsed = secretProviderConfigPayloadSchema.safeParse({
|
|
5379
|
+
provider: value.provider,
|
|
5380
|
+
config: value.config
|
|
5381
|
+
});
|
|
5382
|
+
if (!parsed.success) {
|
|
5383
|
+
for (const issue of parsed.error.issues) {
|
|
5384
|
+
ctx.addIssue({
|
|
5385
|
+
...issue,
|
|
5386
|
+
path: issue.path[0] === "config" ? issue.path : ["config", ...issue.path]
|
|
5387
|
+
});
|
|
5388
|
+
}
|
|
5389
|
+
}
|
|
5390
|
+
});
|
|
5391
|
+
var remoteSecretImportSelectionSchema = external_exports.object({
|
|
5392
|
+
externalRef: external_exports.string().trim().min(1).max(2048),
|
|
5393
|
+
name: external_exports.string().trim().min(1).max(160).optional().nullable(),
|
|
5394
|
+
key: external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9_.-]+$/).optional().nullable(),
|
|
5395
|
+
description: external_exports.string().trim().max(500).optional().nullable(),
|
|
5396
|
+
providerVersionRef: external_exports.string().trim().min(1).max(512).optional().nullable(),
|
|
5397
|
+
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
5398
|
+
});
|
|
5399
|
+
var remoteSecretImportSchema = external_exports.object({
|
|
5400
|
+
providerConfigId: external_exports.string().uuid(),
|
|
5401
|
+
secrets: external_exports.array(remoteSecretImportSelectionSchema).min(1).max(100)
|
|
5402
|
+
});
|
|
5403
|
+
|
|
5404
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/environment.js
|
|
5405
|
+
var environmentDriverSchema = external_exports.enum(ENVIRONMENT_DRIVERS);
|
|
5406
|
+
var environmentStatusSchema = external_exports.enum(ENVIRONMENT_STATUSES);
|
|
5407
|
+
var environmentLeaseStatusSchema = external_exports.enum(ENVIRONMENT_LEASE_STATUSES);
|
|
5408
|
+
var environmentLeaseCleanupStatusSchema = external_exports.enum(ENVIRONMENT_LEASE_CLEANUP_STATUSES);
|
|
5409
|
+
var environmentFields = {
|
|
5410
|
+
name: external_exports.string().min(1),
|
|
5411
|
+
description: external_exports.string().optional().nullable(),
|
|
5412
|
+
driver: environmentDriverSchema,
|
|
5413
|
+
status: environmentStatusSchema.optional().default("active"),
|
|
5414
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional().default({}),
|
|
5415
|
+
envVars: envConfigSchema.optional().default({}),
|
|
5416
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
5417
|
+
};
|
|
5418
|
+
var createEnvironmentSchema = external_exports.object(environmentFields).strict();
|
|
5419
|
+
var updateEnvironmentSchema = external_exports.object({
|
|
5420
|
+
name: external_exports.string().min(1).optional(),
|
|
5421
|
+
description: external_exports.string().optional().nullable(),
|
|
5422
|
+
driver: environmentDriverSchema.optional(),
|
|
5423
|
+
status: environmentStatusSchema.optional(),
|
|
5424
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
5425
|
+
envVars: envConfigSchema.optional(),
|
|
5426
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
5427
|
+
}).strict();
|
|
5428
|
+
var probeEnvironmentConfigSchema = external_exports.object({
|
|
5429
|
+
name: external_exports.string().min(1).optional(),
|
|
5430
|
+
description: external_exports.string().optional().nullable(),
|
|
5431
|
+
driver: environmentDriverSchema,
|
|
5432
|
+
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional().default({}),
|
|
5433
|
+
envVars: envConfigSchema.optional().default({}),
|
|
5434
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
5435
|
+
}).strict();
|
|
5436
|
+
|
|
5437
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/environment-custom-images.js
|
|
5438
|
+
var isoDateTime = external_exports.union([external_exports.date(), external_exports.string().datetime()]);
|
|
5439
|
+
var providerKeySchema = external_exports.string().min(1).max(200);
|
|
5440
|
+
var optionalRecordSchema = external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable();
|
|
5441
|
+
var environmentCustomImageTemplateKindSchema = external_exports.enum(ENVIRONMENT_CUSTOM_IMAGE_TEMPLATE_KINDS);
|
|
5442
|
+
var environmentCustomImageTemplateStatusSchema = external_exports.enum(ENVIRONMENT_CUSTOM_IMAGE_TEMPLATE_STATUSES);
|
|
5443
|
+
var environmentCustomImageSetupSessionStatusSchema = external_exports.enum(ENVIRONMENT_CUSTOM_IMAGE_SETUP_SESSION_STATUSES);
|
|
5444
|
+
var environmentCustomImageSetupConnectionTypeSchema = external_exports.enum(ENVIRONMENT_CUSTOM_IMAGE_SETUP_CONNECTION_TYPES);
|
|
5445
|
+
var environmentCustomImageSetupConnectionSummarySchema = external_exports.object({
|
|
5446
|
+
type: environmentCustomImageSetupConnectionTypeSchema,
|
|
5447
|
+
username: external_exports.string().min(1).max(200).optional().nullable(),
|
|
5448
|
+
hostRedacted: external_exports.literal(true).optional().default(true),
|
|
5449
|
+
portRedacted: external_exports.literal(true).optional().default(true),
|
|
5450
|
+
label: external_exports.string().min(1).max(200).optional().nullable(),
|
|
5451
|
+
instructions: external_exports.string().min(1).max(1e3).optional().nullable()
|
|
5452
|
+
}).strict();
|
|
5453
|
+
var environmentCustomImageTemplateSchema = external_exports.object({
|
|
5454
|
+
id: external_exports.string().uuid(),
|
|
5455
|
+
environmentId: external_exports.string().uuid(),
|
|
5456
|
+
provider: providerKeySchema,
|
|
5457
|
+
templateKind: environmentCustomImageTemplateKindSchema,
|
|
5458
|
+
templateRef: external_exports.string().min(1).nullable(),
|
|
5459
|
+
sourceTemplateRef: external_exports.string().min(1).nullable(),
|
|
5460
|
+
sourceEnvironmentConfigFingerprint: external_exports.string().min(1).nullable(),
|
|
5461
|
+
status: environmentCustomImageTemplateStatusSchema,
|
|
5462
|
+
createdByUserId: external_exports.string().min(1).nullable(),
|
|
5463
|
+
createdByAgentId: external_exports.string().uuid().nullable(),
|
|
5464
|
+
capturedAt: isoDateTime.nullable(),
|
|
5465
|
+
lastUsedAt: isoDateTime.nullable(),
|
|
5466
|
+
supersededByTemplateId: external_exports.string().uuid().nullable(),
|
|
5467
|
+
metadata: optionalRecordSchema,
|
|
5468
|
+
createdAt: isoDateTime,
|
|
5469
|
+
updatedAt: isoDateTime
|
|
5470
|
+
}).strict();
|
|
5471
|
+
var environmentCustomImageSetupSessionSchema = external_exports.object({
|
|
5472
|
+
id: external_exports.string().uuid(),
|
|
5473
|
+
environmentId: external_exports.string().uuid(),
|
|
5474
|
+
templateId: external_exports.string().uuid().nullable(),
|
|
5475
|
+
promotedTemplateId: external_exports.string().uuid().nullable(),
|
|
5476
|
+
provider: providerKeySchema,
|
|
5477
|
+
providerLeaseId: external_exports.string().min(1).nullable(),
|
|
5478
|
+
environmentLeaseId: external_exports.string().uuid().nullable(),
|
|
5479
|
+
status: environmentCustomImageSetupSessionStatusSchema,
|
|
5480
|
+
startedByUserId: external_exports.string().min(1).nullable(),
|
|
5481
|
+
startedByAgentId: external_exports.string().uuid().nullable(),
|
|
5482
|
+
baseTemplateRef: external_exports.string().min(1).nullable(),
|
|
5483
|
+
expiresAt: isoDateTime.nullable(),
|
|
5484
|
+
finishedAt: isoDateTime.nullable(),
|
|
5485
|
+
failureReason: external_exports.string().min(1).nullable(),
|
|
5486
|
+
connectionSummary: environmentCustomImageSetupConnectionSummarySchema.nullable(),
|
|
5487
|
+
connectionSecretRef: external_exports.string().min(1).nullable(),
|
|
5488
|
+
metadata: optionalRecordSchema,
|
|
5489
|
+
createdAt: isoDateTime,
|
|
5490
|
+
updatedAt: isoDateTime
|
|
5491
|
+
}).strict();
|
|
5492
|
+
var startEnvironmentCustomImageSetupSessionSchema = external_exports.object({
|
|
5493
|
+
templateId: external_exports.string().uuid().optional().nullable(),
|
|
5494
|
+
ttlSeconds: external_exports.number().int().min(60).max(24 * 60 * 60).optional()
|
|
5495
|
+
}).strict();
|
|
5496
|
+
var finishEnvironmentCustomImageSetupSessionSchema = external_exports.object({
|
|
5497
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
5498
|
+
}).strict();
|
|
5499
|
+
var cancelEnvironmentCustomImageSetupSessionSchema = external_exports.object({
|
|
5500
|
+
reason: external_exports.string().min(1).max(1e3).optional()
|
|
5501
|
+
}).strict();
|
|
5502
|
+
var createEnvironmentCustomImageTerminalSessionTokenSchema = external_exports.object({}).strict().default({});
|
|
5503
|
+
var environmentCustomImageTerminalSessionTokenSchema = external_exports.object({
|
|
5504
|
+
id: external_exports.string().min(1),
|
|
5505
|
+
token: external_exports.string().min(32),
|
|
5506
|
+
expiresAt: isoDateTime,
|
|
5507
|
+
setupSessionId: external_exports.string().min(1),
|
|
5508
|
+
environmentId: external_exports.string().min(1),
|
|
5509
|
+
connectionType: external_exports.literal("ssh"),
|
|
5510
|
+
websocketPath: external_exports.string().min(1)
|
|
5511
|
+
}).strict();
|
|
5512
|
+
|
|
5513
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/external-object.js
|
|
5514
|
+
var externalObjectStatusCategorySchema = external_exports.enum(EXTERNAL_OBJECT_STATUS_CATEGORIES);
|
|
5515
|
+
var externalObjectStatusToneSchema = external_exports.enum(EXTERNAL_OBJECT_STATUS_TONES);
|
|
5516
|
+
var externalObjectLivenessStateSchema = external_exports.enum(EXTERNAL_OBJECT_LIVENESS_STATES);
|
|
5517
|
+
var externalObjectMentionSourceKindSchema = external_exports.enum(EXTERNAL_OBJECT_MENTION_SOURCE_KINDS);
|
|
5518
|
+
var externalObjectMentionConfidenceSchema = external_exports.enum(EXTERNAL_OBJECT_MENTION_CONFIDENCES);
|
|
5519
|
+
var externalObjectProviderKeySchema = external_exports.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_.-]*$/);
|
|
5520
|
+
var externalObjectTypeSchema = external_exports.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_]*$/);
|
|
5521
|
+
var externalObjectCanonicalIdentitySchema = external_exports.object({
|
|
5522
|
+
scheme: external_exports.enum(["http", "https"]),
|
|
5523
|
+
host: external_exports.string().trim().min(1),
|
|
5524
|
+
path: external_exports.string().trim().min(1),
|
|
5525
|
+
queryParamHashes: external_exports.record(external_exports.string().regex(/^[a-f0-9]{64}$/)).optional()
|
|
5526
|
+
}).strict();
|
|
5527
|
+
var externalObjectMentionSourceSchema = external_exports.object({
|
|
5528
|
+
sourceKind: externalObjectMentionSourceKindSchema,
|
|
5529
|
+
documentKey: external_exports.string().trim().min(1).optional().nullable(),
|
|
5530
|
+
propertyKey: external_exports.string().trim().min(1).optional().nullable()
|
|
5531
|
+
}).strict();
|
|
5532
|
+
|
|
5533
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/company-skill.js
|
|
5534
|
+
var companySkillSourceTypeSchema = external_exports.enum(["local_path", "github", "url", "catalog", "skills_sh"]);
|
|
5535
|
+
var companySkillTrustLevelSchema = external_exports.enum(["markdown_only", "assets", "scripts_executables"]);
|
|
5536
|
+
var companySkillCompatibilitySchema = external_exports.enum(["compatible", "unknown", "invalid"]);
|
|
5537
|
+
var companySkillSourceBadgeSchema = external_exports.enum(["paperclip", "github", "local", "url", "catalog", "skills_sh"]);
|
|
5538
|
+
var companySkillSharingScopeSchema = external_exports.enum(["private", "company", "public_link"]);
|
|
5539
|
+
var companySkillListSortSchema = external_exports.enum(["alphabetical", "recent", "installs", "stars", "agents", "forks"]);
|
|
5540
|
+
var companySkillFileInventoryEntrySchema = external_exports.object({
|
|
5541
|
+
path: external_exports.string().min(1),
|
|
5542
|
+
kind: external_exports.enum(["skill", "markdown", "reference", "script", "asset", "other"])
|
|
5543
|
+
});
|
|
5544
|
+
var companySkillVersionFileInventoryEntrySchema = companySkillFileInventoryEntrySchema.extend({
|
|
5545
|
+
content: external_exports.string()
|
|
5546
|
+
});
|
|
5547
|
+
var companySkillSchema = external_exports.object({
|
|
5548
|
+
id: external_exports.string().uuid(),
|
|
5549
|
+
companyId: external_exports.string().uuid(),
|
|
5550
|
+
key: external_exports.string().min(1),
|
|
5551
|
+
slug: external_exports.string().min(1),
|
|
5552
|
+
name: external_exports.string().min(1),
|
|
5553
|
+
description: external_exports.string().nullable(),
|
|
5554
|
+
markdown: external_exports.string(),
|
|
5555
|
+
sourceType: companySkillSourceTypeSchema,
|
|
5556
|
+
sourceLocator: external_exports.string().nullable(),
|
|
5557
|
+
sourceRef: external_exports.string().nullable(),
|
|
5558
|
+
trustLevel: companySkillTrustLevelSchema,
|
|
5559
|
+
compatibility: companySkillCompatibilitySchema,
|
|
5560
|
+
fileInventory: external_exports.array(companySkillFileInventoryEntrySchema).default([]),
|
|
5561
|
+
iconUrl: external_exports.string().nullable(),
|
|
5562
|
+
color: external_exports.string().nullable(),
|
|
5563
|
+
tagline: external_exports.string().nullable(),
|
|
5564
|
+
authorName: external_exports.string().nullable(),
|
|
5565
|
+
homepageUrl: external_exports.string().nullable(),
|
|
5566
|
+
categories: external_exports.array(external_exports.string().min(1)).default([]),
|
|
5567
|
+
sharingScope: companySkillSharingScopeSchema,
|
|
5568
|
+
publicShareToken: external_exports.string().nullable(),
|
|
5569
|
+
forkedFromSkillId: external_exports.string().uuid().nullable(),
|
|
5570
|
+
forkedFromCompanyId: external_exports.string().uuid().nullable(),
|
|
5571
|
+
starCount: external_exports.number().int().nonnegative(),
|
|
5572
|
+
installCount: external_exports.number().int().nonnegative(),
|
|
5573
|
+
forkCount: external_exports.number().int().nonnegative(),
|
|
5574
|
+
currentVersionId: external_exports.string().uuid().nullable(),
|
|
5575
|
+
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).nullable(),
|
|
5576
|
+
createdAt: external_exports.coerce.date(),
|
|
5577
|
+
updatedAt: external_exports.coerce.date()
|
|
5578
|
+
});
|
|
5579
|
+
var companySkillListItemSchema = companySkillSchema.extend({
|
|
5580
|
+
attachedAgentCount: external_exports.number().int().nonnegative(),
|
|
5581
|
+
editable: external_exports.boolean(),
|
|
5582
|
+
editableReason: external_exports.string().nullable(),
|
|
5583
|
+
sourceLabel: external_exports.string().nullable(),
|
|
5584
|
+
sourceBadge: companySkillSourceBadgeSchema,
|
|
5585
|
+
catalogKind: external_exports.enum(["bundled", "optional"]).nullable(),
|
|
5586
|
+
originHash: external_exports.string().nullable(),
|
|
5587
|
+
packageName: external_exports.string().nullable(),
|
|
5588
|
+
packageVersion: external_exports.string().nullable()
|
|
5589
|
+
});
|
|
5590
|
+
var companySkillUsageAgentSchema = external_exports.object({
|
|
5591
|
+
id: external_exports.string().uuid(),
|
|
5592
|
+
name: external_exports.string().min(1),
|
|
5593
|
+
urlKey: external_exports.string().min(1),
|
|
5594
|
+
adapterType: external_exports.string().min(1),
|
|
5595
|
+
desired: external_exports.boolean(),
|
|
5596
|
+
actualState: external_exports.string().nullable().describe("Runtime adapter skill state when explicitly fetched; company skill detail reads return null without probing agent runtimes."),
|
|
5597
|
+
versionId: external_exports.string().uuid().nullable()
|
|
5598
|
+
});
|
|
5599
|
+
var companySkillListQuerySchema = external_exports.object({
|
|
5600
|
+
q: external_exports.string().min(1).optional(),
|
|
5601
|
+
sort: companySkillListSortSchema.optional(),
|
|
5602
|
+
categories: external_exports.array(external_exports.string().min(1)).optional(),
|
|
5603
|
+
scope: companySkillSharingScopeSchema.optional()
|
|
5604
|
+
});
|
|
5605
|
+
var companySkillCategoryCountSchema = external_exports.object({
|
|
5606
|
+
slug: external_exports.string().min(1),
|
|
5607
|
+
count: external_exports.number().int().nonnegative()
|
|
5608
|
+
});
|
|
5609
|
+
var companySkillVersionSchema = external_exports.object({
|
|
5610
|
+
id: external_exports.string().uuid(),
|
|
5611
|
+
companyId: external_exports.string().uuid(),
|
|
5612
|
+
companySkillId: external_exports.string().uuid(),
|
|
5613
|
+
revisionNumber: external_exports.number().int().positive(),
|
|
5614
|
+
label: external_exports.string().nullable(),
|
|
5615
|
+
fileInventory: external_exports.array(companySkillVersionFileInventoryEntrySchema).default([]),
|
|
5616
|
+
authorAgentId: external_exports.string().uuid().nullable(),
|
|
5617
|
+
authorUserId: external_exports.string().nullable(),
|
|
5618
|
+
createdAt: external_exports.coerce.date()
|
|
5619
|
+
});
|
|
5620
|
+
var companySkillDetailSchema = companySkillSchema.extend({
|
|
5621
|
+
attachedAgentCount: external_exports.number().int().nonnegative(),
|
|
5622
|
+
usedByAgents: external_exports.array(companySkillUsageAgentSchema).default([]),
|
|
5623
|
+
editable: external_exports.boolean(),
|
|
5624
|
+
editableReason: external_exports.string().nullable(),
|
|
5625
|
+
sourceLabel: external_exports.string().nullable(),
|
|
5626
|
+
sourceBadge: companySkillSourceBadgeSchema,
|
|
5627
|
+
currentVersion: companySkillVersionSchema.nullable(),
|
|
5628
|
+
starredByCurrentActor: external_exports.boolean()
|
|
5629
|
+
});
|
|
5630
|
+
var companySkillVersionCreateSchema = external_exports.object({
|
|
5631
|
+
label: external_exports.string().trim().min(1).nullable().optional()
|
|
5632
|
+
}).default({});
|
|
5633
|
+
var companySkillStarResultSchema = external_exports.object({
|
|
5634
|
+
skillId: external_exports.string().uuid(),
|
|
5635
|
+
starred: external_exports.boolean(),
|
|
5636
|
+
starCount: external_exports.number().int().nonnegative()
|
|
5637
|
+
});
|
|
5638
|
+
var companySkillCommentSchema = external_exports.object({
|
|
5639
|
+
id: external_exports.string().uuid(),
|
|
5640
|
+
companyId: external_exports.string().uuid(),
|
|
5641
|
+
companySkillId: external_exports.string().uuid(),
|
|
5642
|
+
parentCommentId: external_exports.string().uuid().nullable(),
|
|
5643
|
+
authorAgentId: external_exports.string().uuid().nullable(),
|
|
5644
|
+
authorUserId: external_exports.string().nullable(),
|
|
5645
|
+
body: external_exports.string(),
|
|
5646
|
+
deletedAt: external_exports.coerce.date().nullable(),
|
|
5647
|
+
createdAt: external_exports.coerce.date(),
|
|
5648
|
+
updatedAt: external_exports.coerce.date()
|
|
5649
|
+
});
|
|
5650
|
+
var companySkillCommentCreateSchema = external_exports.object({
|
|
5651
|
+
body: external_exports.string().min(1),
|
|
5652
|
+
parentCommentId: external_exports.string().uuid().nullable().optional()
|
|
5653
|
+
});
|
|
5654
|
+
var companySkillCommentUpdateSchema = external_exports.object({
|
|
5655
|
+
body: external_exports.string().min(1)
|
|
5656
|
+
});
|
|
5657
|
+
var companySkillForkSchema = external_exports.object({
|
|
5658
|
+
name: external_exports.string().min(1).nullable().optional(),
|
|
5659
|
+
slug: external_exports.string().min(1).nullable().optional(),
|
|
5660
|
+
sharingScope: companySkillSharingScopeSchema.optional()
|
|
5661
|
+
}).default({});
|
|
5662
|
+
var companySkillUpdateSchema = external_exports.object({
|
|
5663
|
+
description: external_exports.string().nullable().optional(),
|
|
5664
|
+
iconUrl: external_exports.string().nullable().optional(),
|
|
5665
|
+
color: external_exports.string().nullable().optional(),
|
|
5666
|
+
tagline: external_exports.string().max(120).nullable().optional(),
|
|
5667
|
+
authorName: external_exports.string().nullable().optional(),
|
|
5668
|
+
homepageUrl: external_exports.string().nullable().optional(),
|
|
5669
|
+
categories: external_exports.array(external_exports.string().min(1)).optional(),
|
|
5670
|
+
sharingScope: companySkillSharingScopeSchema.optional()
|
|
5671
|
+
}).default({});
|
|
5672
|
+
var companySkillUpdateStatusSchema = external_exports.object({
|
|
5673
|
+
supported: external_exports.boolean(),
|
|
5674
|
+
reason: external_exports.string().nullable(),
|
|
5675
|
+
trackingRef: external_exports.string().nullable(),
|
|
5676
|
+
currentRef: external_exports.string().nullable(),
|
|
5677
|
+
latestRef: external_exports.string().nullable(),
|
|
5678
|
+
hasUpdate: external_exports.boolean(),
|
|
5679
|
+
installedHash: external_exports.string().nullable(),
|
|
5680
|
+
originHash: external_exports.string().nullable(),
|
|
5681
|
+
userModifiedAt: external_exports.string().nullable(),
|
|
5682
|
+
updateHoldReason: external_exports.enum([
|
|
5683
|
+
"local_modifications",
|
|
5684
|
+
"audit_hard_stop",
|
|
5685
|
+
"origin_unavailable",
|
|
5686
|
+
"compatibility_invalid",
|
|
5687
|
+
"operator_hold"
|
|
5688
|
+
]).nullable(),
|
|
5689
|
+
auditVerdict: external_exports.enum(["pass", "warning", "fail"]).nullable(),
|
|
5690
|
+
auditCodes: external_exports.array(external_exports.string())
|
|
5001
5691
|
});
|
|
5002
5692
|
var companySkillAuditFindingSchema = external_exports.object({
|
|
5003
5693
|
code: external_exports.string().min(1),
|
|
@@ -5063,7 +5753,15 @@ var companySkillCreateSchema = external_exports.object({
|
|
|
5063
5753
|
name: external_exports.string().min(1),
|
|
5064
5754
|
slug: external_exports.string().min(1).nullable().optional(),
|
|
5065
5755
|
description: external_exports.string().nullable().optional(),
|
|
5066
|
-
markdown: external_exports.string().nullable().optional()
|
|
5756
|
+
markdown: external_exports.string().nullable().optional(),
|
|
5757
|
+
iconUrl: external_exports.string().nullable().optional(),
|
|
5758
|
+
color: external_exports.string().nullable().optional(),
|
|
5759
|
+
tagline: external_exports.string().max(120).nullable().optional(),
|
|
5760
|
+
authorName: external_exports.string().nullable().optional(),
|
|
5761
|
+
homepageUrl: external_exports.string().nullable().optional(),
|
|
5762
|
+
categories: external_exports.array(external_exports.string().min(1)).optional(),
|
|
5763
|
+
sharingScope: companySkillSharingScopeSchema.optional(),
|
|
5764
|
+
forkedFromSkillId: external_exports.string().uuid().nullable().optional()
|
|
5067
5765
|
});
|
|
5068
5766
|
var companySkillFileDetailSchema = external_exports.object({
|
|
5069
5767
|
skillId: external_exports.string().uuid(),
|
|
@@ -5085,6 +5783,17 @@ var catalogSkillFileSchema = external_exports.object({
|
|
|
5085
5783
|
sizeBytes: external_exports.number().int().nonnegative(),
|
|
5086
5784
|
sha256: external_exports.string().min(1)
|
|
5087
5785
|
});
|
|
5786
|
+
var catalogSkillGitHubSourceSchema = external_exports.object({
|
|
5787
|
+
type: external_exports.literal("github"),
|
|
5788
|
+
hostname: external_exports.string().min(1),
|
|
5789
|
+
owner: external_exports.string().min(1),
|
|
5790
|
+
repo: external_exports.string().min(1),
|
|
5791
|
+
ref: external_exports.string().min(1),
|
|
5792
|
+
commit: external_exports.string().regex(/^[0-9a-f]{40}$/i),
|
|
5793
|
+
path: external_exports.string(),
|
|
5794
|
+
url: external_exports.string().url()
|
|
5795
|
+
});
|
|
5796
|
+
var catalogSkillSourceSchema = catalogSkillGitHubSourceSchema;
|
|
5088
5797
|
var catalogSkillSchema = external_exports.object({
|
|
5089
5798
|
id: external_exports.string().min(1),
|
|
5090
5799
|
key: external_exports.string().min(1),
|
|
@@ -5103,6 +5812,7 @@ var catalogSkillSchema = external_exports.object({
|
|
|
5103
5812
|
tags: external_exports.array(external_exports.string()),
|
|
5104
5813
|
files: external_exports.array(catalogSkillFileSchema),
|
|
5105
5814
|
contentHash: external_exports.string().min(1),
|
|
5815
|
+
source: catalogSkillSourceSchema.optional(),
|
|
5106
5816
|
packageName: external_exports.string().min(1).optional(),
|
|
5107
5817
|
packageVersion: external_exports.string().min(1).optional()
|
|
5108
5818
|
});
|
|
@@ -5131,61 +5841,57 @@ var companySkillInstallCatalogResultSchema = external_exports.object({
|
|
|
5131
5841
|
warnings: external_exports.array(external_exports.string())
|
|
5132
5842
|
});
|
|
5133
5843
|
|
|
5134
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
5135
|
-
var agentSkillStateSchema = external_exports.enum([
|
|
5136
|
-
"available",
|
|
5137
|
-
"configured",
|
|
5138
|
-
"installed",
|
|
5139
|
-
"missing",
|
|
5140
|
-
"stale",
|
|
5141
|
-
"external"
|
|
5142
|
-
]);
|
|
5143
|
-
var agentSkillOriginSchema = external_exports.enum([
|
|
5144
|
-
"company_managed",
|
|
5145
|
-
"paperclip_required",
|
|
5146
|
-
"user_installed",
|
|
5147
|
-
"external_unknown"
|
|
5148
|
-
]);
|
|
5149
|
-
var agentSkillSyncModeSchema = external_exports.enum([
|
|
5150
|
-
"unsupported",
|
|
5151
|
-
"persistent",
|
|
5152
|
-
"ephemeral"
|
|
5153
|
-
]);
|
|
5154
|
-
var agentSkillEntrySchema = external_exports.object({
|
|
5155
|
-
key: external_exports.string().min(1),
|
|
5156
|
-
runtimeName: external_exports.string().min(1).nullable(),
|
|
5157
|
-
desired: external_exports.boolean(),
|
|
5158
|
-
managed: external_exports.boolean(),
|
|
5159
|
-
required: external_exports.boolean().optional(),
|
|
5160
|
-
requiredReason: external_exports.string().nullable().optional(),
|
|
5161
|
-
state: agentSkillStateSchema,
|
|
5162
|
-
origin: agentSkillOriginSchema.optional(),
|
|
5163
|
-
originLabel: external_exports.string().nullable().optional(),
|
|
5164
|
-
locationLabel: external_exports.string().nullable().optional(),
|
|
5165
|
-
readOnly: external_exports.boolean().optional(),
|
|
5166
|
-
sourcePath: external_exports.string().nullable().optional(),
|
|
5167
|
-
targetPath: external_exports.string().nullable().optional(),
|
|
5168
|
-
detail: external_exports.string().nullable().optional()
|
|
5169
|
-
});
|
|
5170
|
-
var agentSkillSnapshotSchema = external_exports.object({
|
|
5171
|
-
adapterType: external_exports.string().min(1),
|
|
5172
|
-
supported: external_exports.boolean(),
|
|
5173
|
-
mode: agentSkillSyncModeSchema,
|
|
5174
|
-
desiredSkills: external_exports.array(external_exports.string().min(1)),
|
|
5175
|
-
entries: external_exports.array(agentSkillEntrySchema),
|
|
5176
|
-
warnings: external_exports.array(external_exports.string())
|
|
5177
|
-
});
|
|
5178
|
-
var agentSkillSyncSchema = external_exports.object({
|
|
5179
|
-
desiredSkills: external_exports.array(external_exports.string().min(1))
|
|
5180
|
-
});
|
|
5181
|
-
|
|
5182
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.529.0/node_modules/@paperclipai/shared/dist/validators/text.js
|
|
5844
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/text.js
|
|
5183
5845
|
function normalizeEscapedLineBreaks(value) {
|
|
5184
5846
|
return value.replace(/\\r\\n/g, "\n").replace(/\\n/g, "\n").replace(/\\r/g, "\n");
|
|
5185
5847
|
}
|
|
5186
5848
|
var multilineTextSchema = external_exports.string().transform(normalizeEscapedLineBreaks);
|
|
5187
5849
|
|
|
5188
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
5850
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/trust-policy.js
|
|
5851
|
+
var trustPresetSchema = external_exports.enum(TRUST_PRESETS);
|
|
5852
|
+
var lowTrustOutputPromotionTargetSchema = external_exports.object({
|
|
5853
|
+
type: external_exports.literal("issue"),
|
|
5854
|
+
issueId: external_exports.string().uuid()
|
|
5855
|
+
}).strict();
|
|
5856
|
+
var lowTrustBoundarySchema = external_exports.object({
|
|
5857
|
+
mode: external_exports.literal(LOW_TRUST_REVIEW_PRESET),
|
|
5858
|
+
companyId: external_exports.string().uuid().optional(),
|
|
5859
|
+
projectIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
5860
|
+
rootIssueId: external_exports.string().uuid().optional(),
|
|
5861
|
+
issueIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
5862
|
+
allowedAgentIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
5863
|
+
allowedSecretBindingIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
5864
|
+
allowedToolClasses: external_exports.array(external_exports.string().trim().min(1)).optional(),
|
|
5865
|
+
outputPromotionTarget: lowTrustOutputPromotionTargetSchema.optional()
|
|
5866
|
+
}).strict();
|
|
5867
|
+
var lowTrustReviewPresetPolicySchema = external_exports.object({
|
|
5868
|
+
id: external_exports.literal(LOW_TRUST_REVIEW_PRESET),
|
|
5869
|
+
version: external_exports.literal(LOW_TRUST_REVIEW_PRESET_VERSION),
|
|
5870
|
+
rawOutputDisposition: external_exports.literal(LOW_TRUST_REVIEW_RAW_OUTPUT_DISPOSITION)
|
|
5871
|
+
}).strict();
|
|
5872
|
+
var trustAuthorizationPolicySchema = external_exports.object({
|
|
5873
|
+
trustPreset: trustPresetSchema.optional(),
|
|
5874
|
+
reviewPreset: lowTrustReviewPresetPolicySchema.optional(),
|
|
5875
|
+
trustBoundary: lowTrustBoundarySchema.optional()
|
|
5876
|
+
}).catchall(external_exports.unknown());
|
|
5877
|
+
var sourceTrustArtifactKindSchema = external_exports.enum(["issue", "comment", "document", "work_product"]);
|
|
5878
|
+
var sourceTrustMetadataSchema = external_exports.object({
|
|
5879
|
+
preset: trustPresetSchema,
|
|
5880
|
+
disposition: external_exports.enum(["quarantined", "promoted"]),
|
|
5881
|
+
sourceIssueId: external_exports.string().uuid().nullable().optional(),
|
|
5882
|
+
sourceRunId: external_exports.string().uuid().nullable().optional(),
|
|
5883
|
+
sourceAgentId: external_exports.string().uuid().nullable().optional(),
|
|
5884
|
+
promotedFrom: external_exports.object({
|
|
5885
|
+
artifactKind: sourceTrustArtifactKindSchema,
|
|
5886
|
+
artifactId: external_exports.string().uuid(),
|
|
5887
|
+
issueId: external_exports.string().uuid().nullable().optional()
|
|
5888
|
+
}).strict().nullable().optional(),
|
|
5889
|
+
promotedByActorType: external_exports.enum(["agent", "user", "system"]).nullable().optional(),
|
|
5890
|
+
promotedByActorId: external_exports.string().trim().min(1).nullable().optional(),
|
|
5891
|
+
promotedAt: external_exports.string().datetime({ offset: true }).nullable().optional()
|
|
5892
|
+
}).strict();
|
|
5893
|
+
|
|
5894
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/issue.js
|
|
5189
5895
|
var issueBlockedInboxStateSchema = external_exports.enum([
|
|
5190
5896
|
"needs_attention",
|
|
5191
5897
|
"awaiting_decision",
|
|
@@ -5333,7 +6039,9 @@ var issueExecutionPolicySchema = external_exports.object({
|
|
|
5333
6039
|
mode: external_exports.enum(ISSUE_EXECUTION_POLICY_MODES).optional().default("normal"),
|
|
5334
6040
|
commentRequired: external_exports.boolean().optional().default(true),
|
|
5335
6041
|
stages: external_exports.array(issueExecutionStageSchema).default([]),
|
|
5336
|
-
monitor: issueExecutionMonitorPolicySchema.optional().nullable()
|
|
6042
|
+
monitor: issueExecutionMonitorPolicySchema.optional().nullable(),
|
|
6043
|
+
reviewPreset: lowTrustReviewPresetPolicySchema.optional(),
|
|
6044
|
+
authorizationPolicy: trustAuthorizationPolicySchema.optional()
|
|
5337
6045
|
});
|
|
5338
6046
|
var issueExecutionMonitorStateSchema = external_exports.object({
|
|
5339
6047
|
status: external_exports.enum(ISSUE_EXECUTION_MONITOR_STATE_STATUSES),
|
|
@@ -5482,21 +6190,36 @@ var createIssueBaseSchema = external_exports.object({
|
|
|
5482
6190
|
assigneeAgentId: external_exports.string().uuid().optional().nullable(),
|
|
5483
6191
|
assigneeUserId: external_exports.string().optional().nullable(),
|
|
5484
6192
|
requestDepth: issueRequestDepthInputSchema.optional().default(0),
|
|
6193
|
+
createdByUserId: external_exports.string().optional().nullable(),
|
|
6194
|
+
responsibleUserId: external_exports.string().optional().nullable(),
|
|
5485
6195
|
billingCode: external_exports.string().optional().nullable(),
|
|
5486
6196
|
assigneeAdapterOverrides: issueAssigneeAdapterOverridesSchema.optional().nullable(),
|
|
5487
6197
|
executionPolicy: issueExecutionPolicySchema.optional().nullable(),
|
|
5488
6198
|
executionWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
5489
6199
|
executionWorkspacePreference: external_exports.enum(ISSUE_EXECUTION_WORKSPACE_PREFERENCES).optional().nullable(),
|
|
5490
6200
|
executionWorkspaceSettings: issueExecutionWorkspaceSettingsSchema.optional().nullable(),
|
|
5491
|
-
labelIds: external_exports.array(external_exports.string().uuid()).optional()
|
|
6201
|
+
labelIds: external_exports.array(external_exports.string().uuid()).optional(),
|
|
6202
|
+
watchdogDiscovery: external_exports.object({
|
|
6203
|
+
kind: external_exports.enum(ISSUE_WATCHDOG_DISCOVERY_KINDS),
|
|
6204
|
+
evidenceMarkdown: multilineTextSchema.optional().nullable()
|
|
6205
|
+
}).strict().optional().nullable(),
|
|
6206
|
+
watchdog: external_exports.object({
|
|
6207
|
+
agentId: external_exports.string().uuid(),
|
|
6208
|
+
instructions: multilineTextSchema.optional().nullable()
|
|
6209
|
+
}).strict().optional().nullable()
|
|
5492
6210
|
});
|
|
5493
6211
|
var createIssueInputSchema = createIssueBaseSchema.extend({
|
|
5494
6212
|
status: createIssueBaseSchema.shape.status.optional()
|
|
5495
6213
|
});
|
|
5496
6214
|
var createIssueSchema = withCreateIssueStatusDefault(createIssueBaseSchema);
|
|
6215
|
+
var upsertIssueWatchdogSchema = external_exports.object({
|
|
6216
|
+
agentId: external_exports.string().uuid(),
|
|
6217
|
+
instructions: multilineTextSchema.optional().nullable()
|
|
6218
|
+
}).strict();
|
|
5497
6219
|
var createChildIssueSchema = withCreateIssueStatusDefault(createIssueBaseSchema.omit({
|
|
5498
6220
|
parentId: true,
|
|
5499
|
-
inheritExecutionWorkspaceFromIssueId: true
|
|
6221
|
+
inheritExecutionWorkspaceFromIssueId: true,
|
|
6222
|
+
watchdogDiscovery: true
|
|
5500
6223
|
}).extend({
|
|
5501
6224
|
acceptanceCriteria: external_exports.array(external_exports.string().trim().min(1).max(500)).max(20).optional(),
|
|
5502
6225
|
blockParentUntilDone: external_exports.boolean().optional().default(false)
|
|
@@ -5509,7 +6232,11 @@ var createIssueLabelSchema = external_exports.object({
|
|
|
5509
6232
|
name: external_exports.string().trim().min(1).max(48),
|
|
5510
6233
|
color: external_exports.string().regex(/^#(?:[0-9a-fA-F]{6})$/, "Color must be a 6-digit hex value")
|
|
5511
6234
|
});
|
|
5512
|
-
var updateIssueSchema = createIssueBaseSchema.
|
|
6235
|
+
var updateIssueSchema = createIssueBaseSchema.omit({
|
|
6236
|
+
createdByUserId: true,
|
|
6237
|
+
responsibleUserId: true,
|
|
6238
|
+
watchdog: true
|
|
6239
|
+
}).partial().extend({
|
|
5513
6240
|
requestDepth: issueRequestDepthInputSchema.optional(),
|
|
5514
6241
|
assigneeAgentId: external_exports.string().trim().min(1).optional().nullable(),
|
|
5515
6242
|
comment: multilineTextSchema.pipe(external_exports.string().min(1)).optional(),
|
|
@@ -5677,6 +6404,7 @@ var askUserQuestionsPayloadSchema = external_exports.object({
|
|
|
5677
6404
|
version: external_exports.literal(1),
|
|
5678
6405
|
title: external_exports.string().trim().max(240).nullable().optional(),
|
|
5679
6406
|
submitLabel: external_exports.string().trim().max(120).nullable().optional(),
|
|
6407
|
+
supersedeOnUserComment: external_exports.boolean().optional(),
|
|
5680
6408
|
questions: external_exports.array(askUserQuestionsQuestionSchema).min(1).max(10)
|
|
5681
6409
|
}).superRefine((value, ctx) => {
|
|
5682
6410
|
const seenQuestionIds = /* @__PURE__ */ new Set();
|
|
@@ -5704,19 +6432,25 @@ var askUserQuestionsPayloadSchema = external_exports.object({
|
|
|
5704
6432
|
});
|
|
5705
6433
|
var askUserQuestionsAnswerSchema = external_exports.object({
|
|
5706
6434
|
questionId: external_exports.string().trim().min(1).max(120),
|
|
5707
|
-
optionIds: external_exports.array(external_exports.string().trim().min(1).max(120)).max(20)
|
|
6435
|
+
optionIds: external_exports.array(external_exports.string().trim().min(1).max(120)).max(20),
|
|
6436
|
+
otherText: multilineTextSchema.pipe(external_exports.string().trim().max(4e3)).nullable().optional()
|
|
5708
6437
|
});
|
|
5709
6438
|
var askUserQuestionsResultSchema = external_exports.object({
|
|
5710
6439
|
version: external_exports.literal(1),
|
|
5711
6440
|
answers: external_exports.array(askUserQuestionsAnswerSchema).max(20),
|
|
5712
6441
|
cancelled: external_exports.literal(true).optional(),
|
|
5713
6442
|
cancellationReason: external_exports.string().trim().max(4e3).nullable().optional(),
|
|
6443
|
+
expirationReason: external_exports.literal("superseded_by_comment").optional(),
|
|
6444
|
+
commentId: external_exports.string().uuid().nullable().optional(),
|
|
5714
6445
|
summaryMarkdown: external_exports.string().max(2e4).nullable().optional()
|
|
5715
6446
|
});
|
|
5716
6447
|
var requestConfirmationHrefSchema = external_exports.string().trim().min(1).max(2e3).refine((value) => {
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
6448
|
+
if (value.startsWith("#"))
|
|
6449
|
+
return true;
|
|
6450
|
+
if (value.startsWith("/"))
|
|
6451
|
+
return !value.startsWith("//");
|
|
6452
|
+
return /^https?:\/\//i.test(value);
|
|
6453
|
+
}, "href must be a root-relative path, same-page fragment, or http(s) URL");
|
|
5720
6454
|
var requestConfirmationTargetBaseSchema = external_exports.object({
|
|
5721
6455
|
label: external_exports.string().trim().min(1).max(120).nullable().optional(),
|
|
5722
6456
|
href: requestConfirmationHrefSchema.nullable().optional()
|
|
@@ -5729,28 +6463,119 @@ var requestConfirmationIssueDocumentTargetSchema = requestConfirmationTargetBase
|
|
|
5729
6463
|
revisionId: external_exports.string().uuid(),
|
|
5730
6464
|
revisionNumber: external_exports.number().int().positive().nullable().optional()
|
|
5731
6465
|
});
|
|
5732
|
-
var requestConfirmationCustomTargetSchema = requestConfirmationTargetBaseSchema.extend({
|
|
5733
|
-
type: external_exports.literal("custom"),
|
|
5734
|
-
key: external_exports.string().trim().min(1).max(120),
|
|
5735
|
-
revisionId: external_exports.string().trim().min(1).max(255).nullable().optional(),
|
|
5736
|
-
revisionNumber: external_exports.number().int().positive().nullable().optional()
|
|
6466
|
+
var requestConfirmationCustomTargetSchema = requestConfirmationTargetBaseSchema.extend({
|
|
6467
|
+
type: external_exports.literal("custom"),
|
|
6468
|
+
key: external_exports.string().trim().min(1).max(120),
|
|
6469
|
+
revisionId: external_exports.string().trim().min(1).max(255).nullable().optional(),
|
|
6470
|
+
revisionNumber: external_exports.number().int().positive().nullable().optional()
|
|
6471
|
+
});
|
|
6472
|
+
var requestConfirmationTargetSchema = external_exports.discriminatedUnion("type", [
|
|
6473
|
+
requestConfirmationIssueDocumentTargetSchema,
|
|
6474
|
+
requestConfirmationCustomTargetSchema
|
|
6475
|
+
]);
|
|
6476
|
+
var requestConfirmationPayloadSchema = external_exports.object({
|
|
6477
|
+
version: external_exports.literal(1),
|
|
6478
|
+
prompt: external_exports.string().trim().min(1).max(1e3),
|
|
6479
|
+
acceptLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
6480
|
+
rejectLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
6481
|
+
rejectRequiresReason: external_exports.boolean().optional(),
|
|
6482
|
+
rejectReasonLabel: external_exports.string().trim().min(1).max(160).nullable().optional(),
|
|
6483
|
+
allowDeclineReason: external_exports.boolean().optional().default(true),
|
|
6484
|
+
declineReasonPlaceholder: external_exports.string().trim().min(1).max(240).nullable().optional(),
|
|
6485
|
+
detailsMarkdown: external_exports.string().max(2e4).nullable().optional(),
|
|
6486
|
+
supersedeOnUserComment: external_exports.boolean().optional(),
|
|
6487
|
+
target: requestConfirmationTargetSchema.nullable().optional()
|
|
6488
|
+
});
|
|
6489
|
+
var requestCheckboxConfirmationOptionSchema = external_exports.object({
|
|
6490
|
+
id: external_exports.string().trim().min(1).max(120),
|
|
6491
|
+
label: external_exports.string().trim().min(1).max(120),
|
|
6492
|
+
description: external_exports.string().trim().max(500).nullable().optional()
|
|
5737
6493
|
});
|
|
5738
|
-
var
|
|
5739
|
-
requestConfirmationIssueDocumentTargetSchema,
|
|
5740
|
-
requestConfirmationCustomTargetSchema
|
|
5741
|
-
]);
|
|
5742
|
-
var requestConfirmationPayloadSchema = external_exports.object({
|
|
6494
|
+
var requestCheckboxConfirmationPayloadSchema = external_exports.object({
|
|
5743
6495
|
version: external_exports.literal(1),
|
|
5744
6496
|
prompt: external_exports.string().trim().min(1).max(1e3),
|
|
6497
|
+
detailsMarkdown: external_exports.string().max(2e4).nullable().optional(),
|
|
6498
|
+
options: external_exports.array(requestCheckboxConfirmationOptionSchema).min(1).max(REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT),
|
|
6499
|
+
defaultSelectedOptionIds: external_exports.array(external_exports.string().trim().min(1).max(120)).max(REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT).optional().default([]),
|
|
6500
|
+
minSelected: external_exports.number().int().min(0).optional().default(0),
|
|
6501
|
+
maxSelected: external_exports.number().int().min(0).nullable().optional(),
|
|
5745
6502
|
acceptLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
5746
6503
|
rejectLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
5747
6504
|
rejectRequiresReason: external_exports.boolean().optional(),
|
|
5748
6505
|
rejectReasonLabel: external_exports.string().trim().min(1).max(160).nullable().optional(),
|
|
5749
6506
|
allowDeclineReason: external_exports.boolean().optional().default(true),
|
|
5750
6507
|
declineReasonPlaceholder: external_exports.string().trim().min(1).max(240).nullable().optional(),
|
|
5751
|
-
detailsMarkdown: external_exports.string().max(2e4).nullable().optional(),
|
|
5752
6508
|
supersedeOnUserComment: external_exports.boolean().optional(),
|
|
5753
6509
|
target: requestConfirmationTargetSchema.nullable().optional()
|
|
6510
|
+
}).superRefine((value, ctx) => {
|
|
6511
|
+
const optionIds = /* @__PURE__ */ new Set();
|
|
6512
|
+
for (const [index, option] of value.options.entries()) {
|
|
6513
|
+
if (optionIds.has(option.id)) {
|
|
6514
|
+
ctx.addIssue({
|
|
6515
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6516
|
+
message: "Option ids must be unique within one checkbox confirmation",
|
|
6517
|
+
path: ["options", index, "id"]
|
|
6518
|
+
});
|
|
6519
|
+
}
|
|
6520
|
+
optionIds.add(option.id);
|
|
6521
|
+
}
|
|
6522
|
+
const defaultSelectedOptionIds = /* @__PURE__ */ new Set();
|
|
6523
|
+
for (const [index, optionId] of value.defaultSelectedOptionIds.entries()) {
|
|
6524
|
+
if (defaultSelectedOptionIds.has(optionId)) {
|
|
6525
|
+
ctx.addIssue({
|
|
6526
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6527
|
+
message: "defaultSelectedOptionIds must be unique",
|
|
6528
|
+
path: ["defaultSelectedOptionIds", index]
|
|
6529
|
+
});
|
|
6530
|
+
continue;
|
|
6531
|
+
}
|
|
6532
|
+
defaultSelectedOptionIds.add(optionId);
|
|
6533
|
+
if (!optionIds.has(optionId)) {
|
|
6534
|
+
ctx.addIssue({
|
|
6535
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6536
|
+
message: "defaultSelectedOptionIds must reference existing option ids",
|
|
6537
|
+
path: ["defaultSelectedOptionIds", index]
|
|
6538
|
+
});
|
|
6539
|
+
}
|
|
6540
|
+
}
|
|
6541
|
+
const maxSelected = value.maxSelected ?? null;
|
|
6542
|
+
if (value.minSelected > value.options.length) {
|
|
6543
|
+
ctx.addIssue({
|
|
6544
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6545
|
+
message: "minSelected cannot exceed the option count",
|
|
6546
|
+
path: ["minSelected"]
|
|
6547
|
+
});
|
|
6548
|
+
}
|
|
6549
|
+
if (value.defaultSelectedOptionIds.length < value.minSelected) {
|
|
6550
|
+
ctx.addIssue({
|
|
6551
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6552
|
+
message: "defaultSelectedOptionIds must satisfy minSelected",
|
|
6553
|
+
path: ["defaultSelectedOptionIds"]
|
|
6554
|
+
});
|
|
6555
|
+
}
|
|
6556
|
+
if (maxSelected != null) {
|
|
6557
|
+
if (maxSelected < value.minSelected) {
|
|
6558
|
+
ctx.addIssue({
|
|
6559
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6560
|
+
message: "maxSelected must be greater than or equal to minSelected",
|
|
6561
|
+
path: ["maxSelected"]
|
|
6562
|
+
});
|
|
6563
|
+
}
|
|
6564
|
+
if (maxSelected > value.options.length) {
|
|
6565
|
+
ctx.addIssue({
|
|
6566
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6567
|
+
message: "maxSelected cannot exceed the option count",
|
|
6568
|
+
path: ["maxSelected"]
|
|
6569
|
+
});
|
|
6570
|
+
}
|
|
6571
|
+
if (value.defaultSelectedOptionIds.length > maxSelected) {
|
|
6572
|
+
ctx.addIssue({
|
|
6573
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6574
|
+
message: "defaultSelectedOptionIds cannot exceed maxSelected",
|
|
6575
|
+
path: ["defaultSelectedOptionIds"]
|
|
6576
|
+
});
|
|
6577
|
+
}
|
|
6578
|
+
}
|
|
5754
6579
|
});
|
|
5755
6580
|
var requestConfirmationResultSchema = external_exports.object({
|
|
5756
6581
|
version: external_exports.literal(1),
|
|
@@ -5759,6 +6584,22 @@ var requestConfirmationResultSchema = external_exports.object({
|
|
|
5759
6584
|
commentId: external_exports.string().uuid().nullable().optional(),
|
|
5760
6585
|
staleTarget: requestConfirmationTargetSchema.nullable().optional()
|
|
5761
6586
|
});
|
|
6587
|
+
var requestCheckboxConfirmationResultSchema = requestConfirmationResultSchema.extend({
|
|
6588
|
+
selectedOptionIds: external_exports.array(external_exports.string().trim().min(1).max(120)).max(REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT).optional()
|
|
6589
|
+
}).superRefine((value, ctx) => {
|
|
6590
|
+
const selectedOptionIds = value.selectedOptionIds ?? [];
|
|
6591
|
+
const seenOptionIds = /* @__PURE__ */ new Set();
|
|
6592
|
+
for (const [index, optionId] of selectedOptionIds.entries()) {
|
|
6593
|
+
if (seenOptionIds.has(optionId)) {
|
|
6594
|
+
ctx.addIssue({
|
|
6595
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6596
|
+
message: "selectedOptionIds must be unique",
|
|
6597
|
+
path: ["selectedOptionIds", index]
|
|
6598
|
+
});
|
|
6599
|
+
}
|
|
6600
|
+
seenOptionIds.add(optionId);
|
|
6601
|
+
}
|
|
6602
|
+
});
|
|
5762
6603
|
var createIssueThreadInteractionSchema = external_exports.discriminatedUnion("kind", [
|
|
5763
6604
|
external_exports.object({
|
|
5764
6605
|
kind: external_exports.literal("suggest_tasks"),
|
|
@@ -5781,306 +6622,121 @@ var createIssueThreadInteractionSchema = external_exports.discriminatedUnion("ki
|
|
|
5781
6622
|
payload: askUserQuestionsPayloadSchema
|
|
5782
6623
|
}),
|
|
5783
6624
|
external_exports.object({
|
|
5784
|
-
kind: external_exports.literal("request_confirmation"),
|
|
5785
|
-
idempotencyKey: external_exports.string().trim().max(255).nullable().optional(),
|
|
5786
|
-
sourceCommentId: external_exports.string().uuid().nullable().optional(),
|
|
5787
|
-
sourceRunId: external_exports.string().uuid().nullable().optional(),
|
|
5788
|
-
title: external_exports.string().trim().max(240).nullable().optional(),
|
|
5789
|
-
summary: external_exports.string().trim().max(1e3).nullable().optional(),
|
|
5790
|
-
continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("none"),
|
|
5791
|
-
payload: requestConfirmationPayloadSchema
|
|
5792
|
-
})
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
path: ["selectedClientKeys", index]
|
|
5804
|
-
});
|
|
5805
|
-
continue;
|
|
5806
|
-
}
|
|
5807
|
-
seenClientKeys.add(clientKey);
|
|
5808
|
-
}
|
|
5809
|
-
});
|
|
5810
|
-
var rejectIssueThreadInteractionSchema = external_exports.object({
|
|
5811
|
-
reason: external_exports.string().trim().max(4e3).optional()
|
|
5812
|
-
});
|
|
5813
|
-
var cancelIssueThreadInteractionSchema = external_exports.object({
|
|
5814
|
-
reason: external_exports.string().trim().max(4e3).optional()
|
|
5815
|
-
});
|
|
5816
|
-
var respondIssueThreadInteractionSchema = external_exports.object({
|
|
5817
|
-
answers: external_exports.array(askUserQuestionsAnswerSchema).max(20),
|
|
5818
|
-
summaryMarkdown: multilineTextSchema.pipe(external_exports.string().max(2e4)).nullable().optional()
|
|
5819
|
-
});
|
|
5820
|
-
var linkIssueApprovalSchema = external_exports.object({
|
|
5821
|
-
approvalId: external_exports.string().uuid()
|
|
5822
|
-
});
|
|
5823
|
-
var createIssueAttachmentMetadataSchema = external_exports.object({
|
|
5824
|
-
issueCommentId: external_exports.string().uuid().optional().nullable()
|
|
5825
|
-
});
|
|
5826
|
-
var ISSUE_DOCUMENT_FORMATS = ["markdown"];
|
|
5827
|
-
var issueDocumentFormatSchema = external_exports.enum(ISSUE_DOCUMENT_FORMATS);
|
|
5828
|
-
var upsertIssueDocumentSchema = external_exports.object({
|
|
5829
|
-
title: external_exports.string().trim().max(200).nullable().optional(),
|
|
5830
|
-
format: issueDocumentFormatSchema,
|
|
5831
|
-
body: multilineTextSchema.pipe(external_exports.string().max(524288)),
|
|
5832
|
-
changeSummary: external_exports.string().trim().max(500).nullable().optional(),
|
|
5833
|
-
baseRevisionId: external_exports.string().uuid().nullable().optional()
|
|
5834
|
-
});
|
|
5835
|
-
var restoreIssueDocumentRevisionSchema = external_exports.object({});
|
|
5836
|
-
|
|
5837
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.529.0/node_modules/@paperclipai/shared/dist/validators/secret.js
|
|
5838
|
-
var envBindingPlainSchema = external_exports.object({
|
|
5839
|
-
type: external_exports.literal("plain"),
|
|
5840
|
-
value: external_exports.string()
|
|
5841
|
-
});
|
|
5842
|
-
var envBindingSecretRefSchema = external_exports.object({
|
|
5843
|
-
type: external_exports.literal("secret_ref"),
|
|
5844
|
-
secretId: external_exports.string().uuid(),
|
|
5845
|
-
version: external_exports.union([external_exports.literal("latest"), external_exports.number().int().positive()]).optional()
|
|
5846
|
-
});
|
|
5847
|
-
var envBindingSchema = external_exports.union([
|
|
5848
|
-
external_exports.string(),
|
|
5849
|
-
envBindingPlainSchema,
|
|
5850
|
-
envBindingSecretRefSchema
|
|
5851
|
-
]);
|
|
5852
|
-
var envConfigSchema = external_exports.record(external_exports.string(), envBindingSchema);
|
|
5853
|
-
var createSecretSchema = external_exports.object({
|
|
5854
|
-
name: external_exports.string().min(1),
|
|
5855
|
-
key: external_exports.string().min(1).regex(/^[a-zA-Z0-9_.-]+$/).optional(),
|
|
5856
|
-
provider: external_exports.enum(SECRET_PROVIDERS).optional(),
|
|
5857
|
-
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
5858
|
-
managedMode: external_exports.enum(SECRET_MANAGED_MODES).optional(),
|
|
5859
|
-
value: external_exports.string().min(1).optional().nullable(),
|
|
5860
|
-
description: external_exports.string().optional().nullable(),
|
|
5861
|
-
externalRef: external_exports.string().optional().nullable(),
|
|
5862
|
-
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
5863
|
-
providerVersionRef: external_exports.string().optional().nullable()
|
|
5864
|
-
}).superRefine((value, ctx) => {
|
|
5865
|
-
if ((value.managedMode ?? "paperclip_managed") === "external_reference") {
|
|
5866
|
-
if (!value.externalRef?.trim()) {
|
|
5867
|
-
ctx.addIssue({
|
|
5868
|
-
code: external_exports.ZodIssueCode.custom,
|
|
5869
|
-
path: ["externalRef"],
|
|
5870
|
-
message: "External reference secrets require externalRef"
|
|
5871
|
-
});
|
|
5872
|
-
}
|
|
5873
|
-
return;
|
|
5874
|
-
}
|
|
5875
|
-
if (value.externalRef?.trim()) {
|
|
5876
|
-
ctx.addIssue({
|
|
5877
|
-
code: external_exports.ZodIssueCode.custom,
|
|
5878
|
-
path: ["externalRef"],
|
|
5879
|
-
message: "Managed secrets cannot set externalRef"
|
|
5880
|
-
});
|
|
5881
|
-
}
|
|
5882
|
-
if (!value.value?.trim()) {
|
|
5883
|
-
ctx.addIssue({
|
|
5884
|
-
code: external_exports.ZodIssueCode.custom,
|
|
5885
|
-
path: ["value"],
|
|
5886
|
-
message: "Managed secrets require value"
|
|
5887
|
-
});
|
|
5888
|
-
}
|
|
5889
|
-
});
|
|
5890
|
-
var rotateSecretSchema = external_exports.object({
|
|
5891
|
-
value: external_exports.string().min(1).optional().nullable(),
|
|
5892
|
-
externalRef: external_exports.string().optional().nullable(),
|
|
5893
|
-
providerVersionRef: external_exports.string().optional().nullable(),
|
|
5894
|
-
providerConfigId: external_exports.string().uuid().optional().nullable()
|
|
5895
|
-
});
|
|
5896
|
-
var updateSecretSchema = external_exports.object({
|
|
5897
|
-
name: external_exports.string().min(1).optional(),
|
|
5898
|
-
key: external_exports.string().min(1).regex(/^[a-zA-Z0-9_.-]+$/).optional(),
|
|
5899
|
-
status: external_exports.enum(SECRET_STATUSES).optional(),
|
|
5900
|
-
providerConfigId: external_exports.string().uuid().optional().nullable(),
|
|
5901
|
-
description: external_exports.string().optional().nullable(),
|
|
5902
|
-
externalRef: external_exports.string().optional().nullable(),
|
|
5903
|
-
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
5904
|
-
});
|
|
5905
|
-
var secretBindingTargetSchema = external_exports.object({
|
|
5906
|
-
targetType: external_exports.enum(SECRET_BINDING_TARGET_TYPES),
|
|
5907
|
-
targetId: external_exports.string().min(1),
|
|
5908
|
-
configPath: external_exports.string().min(1)
|
|
5909
|
-
});
|
|
5910
|
-
var createSecretBindingSchema = secretBindingTargetSchema.extend({
|
|
5911
|
-
secretId: external_exports.string().uuid(),
|
|
5912
|
-
versionSelector: external_exports.union([external_exports.literal("latest"), external_exports.number().int().positive()]).default("latest"),
|
|
5913
|
-
required: external_exports.boolean().default(true),
|
|
5914
|
-
label: external_exports.string().optional().nullable()
|
|
5915
|
-
});
|
|
5916
|
-
var safeShortText = external_exports.string().trim().min(1).max(160);
|
|
5917
|
-
var optionalSafeShortText = safeShortText.optional().nullable();
|
|
5918
|
-
var deniedProviderConfigKeyPattern = /^(access[-_]?key([-_]?id)?|secret[-_]?access[-_]?key|secret[-_]?key|token|password|passwd|credential|credentials|private[-_]?key|pem|jwt|session[-_]?token|service[-_]?account([-_]?json)?|client[-_]?secret|secret[-_]?id|unseal[-_]?key|recovery[-_]?key|key[-_]?file([-_]?path)?|token[-_]?file([-_]?path)?)$/i;
|
|
5919
|
-
function rejectSensitiveProviderConfigKeys(value, ctx) {
|
|
5920
|
-
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
5921
|
-
return;
|
|
5922
|
-
for (const key of Object.keys(value)) {
|
|
5923
|
-
if (!deniedProviderConfigKeyPattern.test(key))
|
|
5924
|
-
continue;
|
|
5925
|
-
ctx.addIssue({
|
|
5926
|
-
code: external_exports.ZodIssueCode.custom,
|
|
5927
|
-
path: ["config", key],
|
|
5928
|
-
message: `Provider vault config cannot persist sensitive field: ${key}`
|
|
5929
|
-
});
|
|
5930
|
-
}
|
|
5931
|
-
}
|
|
5932
|
-
var localEncryptedProviderConfigSchema = external_exports.object({
|
|
5933
|
-
backupReminderAcknowledged: external_exports.boolean().optional()
|
|
5934
|
-
}).strict();
|
|
5935
|
-
var awsSecretsManagerProviderConfigSchema = external_exports.object({
|
|
5936
|
-
region: external_exports.string().trim().regex(/^[a-z]{2}(?:-gov)?-[a-z]+-\d+$/, "Invalid AWS region"),
|
|
5937
|
-
namespace: optionalSafeShortText,
|
|
5938
|
-
secretNamePrefix: optionalSafeShortText,
|
|
5939
|
-
kmsKeyId: external_exports.string().trim().min(1).max(512).optional().nullable(),
|
|
5940
|
-
ownerTag: optionalSafeShortText,
|
|
5941
|
-
environmentTag: optionalSafeShortText
|
|
5942
|
-
}).strict();
|
|
5943
|
-
var gcpSecretManagerProviderConfigSchema = external_exports.object({
|
|
5944
|
-
projectId: external_exports.string().trim().min(1).max(128).regex(/^[a-z][a-z0-9-]{4,127}$/).optional().nullable(),
|
|
5945
|
-
location: optionalSafeShortText,
|
|
5946
|
-
namespace: optionalSafeShortText,
|
|
5947
|
-
secretNamePrefix: optionalSafeShortText
|
|
5948
|
-
}).strict();
|
|
5949
|
-
var vaultAddressSchema = external_exports.preprocess((value) => typeof value === "string" ? value.trim() : value, external_exports.string().url().superRefine((value, ctx) => {
|
|
5950
|
-
let url;
|
|
5951
|
-
try {
|
|
5952
|
-
url = new URL(value);
|
|
5953
|
-
} catch {
|
|
5954
|
-
return;
|
|
5955
|
-
}
|
|
5956
|
-
const hasPath = url.pathname !== "" && url.pathname !== "/";
|
|
5957
|
-
if (url.protocol !== "http:" && url.protocol !== "https:" || url.username || url.password || url.search || url.hash || hasPath) {
|
|
5958
|
-
ctx.addIssue({
|
|
5959
|
-
code: external_exports.ZodIssueCode.custom,
|
|
5960
|
-
message: "Vault address must be an origin-only HTTP(S) URL without credentials, path, query, or fragment"
|
|
5961
|
-
});
|
|
5962
|
-
}
|
|
5963
|
-
}).transform((value) => new URL(value).origin));
|
|
5964
|
-
function rejectUnsafeVaultAddress(value, ctx) {
|
|
5965
|
-
if (value === void 0 || value === null)
|
|
5966
|
-
return;
|
|
5967
|
-
const parsed = vaultAddressSchema.safeParse(value);
|
|
5968
|
-
if (parsed.success)
|
|
5969
|
-
return;
|
|
5970
|
-
for (const issue of parsed.error.issues) {
|
|
5971
|
-
ctx.addIssue({
|
|
5972
|
-
...issue,
|
|
5973
|
-
path: ["config", "address", ...issue.path]
|
|
5974
|
-
});
|
|
5975
|
-
}
|
|
5976
|
-
}
|
|
5977
|
-
var vaultProviderConfigSchema = external_exports.object({
|
|
5978
|
-
address: vaultAddressSchema.optional().nullable(),
|
|
5979
|
-
namespace: optionalSafeShortText,
|
|
5980
|
-
mountPath: optionalSafeShortText,
|
|
5981
|
-
secretPathPrefix: optionalSafeShortText
|
|
5982
|
-
}).strict();
|
|
5983
|
-
var secretProviderConfigPayloadSchema = external_exports.discriminatedUnion("provider", [
|
|
5984
|
-
external_exports.object({ provider: external_exports.literal("local_encrypted"), config: localEncryptedProviderConfigSchema }),
|
|
5985
|
-
external_exports.object({ provider: external_exports.literal("aws_secrets_manager"), config: awsSecretsManagerProviderConfigSchema }),
|
|
5986
|
-
external_exports.object({ provider: external_exports.literal("gcp_secret_manager"), config: gcpSecretManagerProviderConfigSchema }),
|
|
5987
|
-
external_exports.object({ provider: external_exports.literal("vault"), config: vaultProviderConfigSchema })
|
|
6625
|
+
kind: external_exports.literal("request_confirmation"),
|
|
6626
|
+
idempotencyKey: external_exports.string().trim().max(255).nullable().optional(),
|
|
6627
|
+
sourceCommentId: external_exports.string().uuid().nullable().optional(),
|
|
6628
|
+
sourceRunId: external_exports.string().uuid().nullable().optional(),
|
|
6629
|
+
title: external_exports.string().trim().max(240).nullable().optional(),
|
|
6630
|
+
summary: external_exports.string().trim().max(1e3).nullable().optional(),
|
|
6631
|
+
continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("none"),
|
|
6632
|
+
payload: requestConfirmationPayloadSchema
|
|
6633
|
+
}),
|
|
6634
|
+
external_exports.object({
|
|
6635
|
+
kind: external_exports.literal("request_checkbox_confirmation"),
|
|
6636
|
+
idempotencyKey: external_exports.string().trim().max(255).nullable().optional(),
|
|
6637
|
+
sourceCommentId: external_exports.string().uuid().nullable().optional(),
|
|
6638
|
+
sourceRunId: external_exports.string().uuid().nullable().optional(),
|
|
6639
|
+
title: external_exports.string().trim().max(240).nullable().optional(),
|
|
6640
|
+
summary: external_exports.string().trim().max(1e3).nullable().optional(),
|
|
6641
|
+
continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("wake_assignee"),
|
|
6642
|
+
payload: requestCheckboxConfirmationPayloadSchema
|
|
6643
|
+
})
|
|
5988
6644
|
]);
|
|
5989
|
-
var
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
status: external_exports.enum(SECRET_PROVIDER_CONFIG_STATUSES).optional(),
|
|
5993
|
-
isDefault: external_exports.boolean().optional(),
|
|
5994
|
-
config: external_exports.record(external_exports.string(), external_exports.unknown()).default({})
|
|
6645
|
+
var acceptIssueThreadInteractionSchema = external_exports.object({
|
|
6646
|
+
selectedClientKeys: external_exports.array(external_exports.string().trim().min(1).max(120)).min(1).max(50).optional(),
|
|
6647
|
+
selectedOptionIds: external_exports.array(external_exports.string().trim().min(1).max(120)).max(REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT).optional()
|
|
5995
6648
|
}).superRefine((value, ctx) => {
|
|
5996
|
-
|
|
5997
|
-
const
|
|
5998
|
-
|
|
5999
|
-
config: value.config
|
|
6000
|
-
});
|
|
6001
|
-
if (!parsed.success) {
|
|
6002
|
-
for (const issue of parsed.error.issues) {
|
|
6649
|
+
const seenClientKeys = /* @__PURE__ */ new Set();
|
|
6650
|
+
for (const [index, clientKey] of (value.selectedClientKeys ?? []).entries()) {
|
|
6651
|
+
if (seenClientKeys.has(clientKey)) {
|
|
6003
6652
|
ctx.addIssue({
|
|
6004
|
-
|
|
6005
|
-
|
|
6653
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6654
|
+
message: "selectedClientKeys must be unique",
|
|
6655
|
+
path: ["selectedClientKeys", index]
|
|
6006
6656
|
});
|
|
6657
|
+
continue;
|
|
6007
6658
|
}
|
|
6659
|
+
seenClientKeys.add(clientKey);
|
|
6008
6660
|
}
|
|
6009
|
-
const
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6013
|
-
path: ["status"],
|
|
6014
|
-
message: `${value.provider} provider vaults are locked while coming soon`
|
|
6015
|
-
});
|
|
6016
|
-
}
|
|
6017
|
-
if ((status === "coming_soon" || status === "disabled") && value.isDefault) {
|
|
6018
|
-
ctx.addIssue({
|
|
6019
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6020
|
-
path: ["isDefault"],
|
|
6021
|
-
message: "Only ready or warning provider vaults can be default"
|
|
6022
|
-
});
|
|
6023
|
-
}
|
|
6024
|
-
});
|
|
6025
|
-
var updateSecretProviderConfigSchema = external_exports.object({
|
|
6026
|
-
displayName: external_exports.string().trim().min(1).max(120).optional(),
|
|
6027
|
-
status: external_exports.enum(SECRET_PROVIDER_CONFIG_STATUSES).optional(),
|
|
6028
|
-
isDefault: external_exports.boolean().optional(),
|
|
6029
|
-
config: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
6030
|
-
}).superRefine((value, ctx) => {
|
|
6031
|
-
if (value.config !== void 0) {
|
|
6032
|
-
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
6033
|
-
rejectUnsafeVaultAddress(value.config.address, ctx);
|
|
6034
|
-
}
|
|
6035
|
-
if ((value.status === "coming_soon" || value.status === "disabled") && value.isDefault) {
|
|
6036
|
-
ctx.addIssue({
|
|
6037
|
-
code: external_exports.ZodIssueCode.custom,
|
|
6038
|
-
path: ["isDefault"],
|
|
6039
|
-
message: "Only ready or warning provider vaults can be default"
|
|
6040
|
-
});
|
|
6041
|
-
}
|
|
6042
|
-
});
|
|
6043
|
-
var remoteSecretImportPreviewSchema = external_exports.object({
|
|
6044
|
-
providerConfigId: external_exports.string().uuid(),
|
|
6045
|
-
query: external_exports.string().trim().max(200).optional().nullable(),
|
|
6046
|
-
nextToken: external_exports.string().trim().min(1).max(4096).optional().nullable(),
|
|
6047
|
-
pageSize: external_exports.number().int().min(1).max(100).optional()
|
|
6048
|
-
});
|
|
6049
|
-
var secretProviderConfigDiscoveryPreviewSchema = external_exports.object({
|
|
6050
|
-
provider: external_exports.enum(SECRET_PROVIDERS),
|
|
6051
|
-
config: external_exports.record(external_exports.unknown()).default({}),
|
|
6052
|
-
query: external_exports.string().trim().max(200).optional().nullable(),
|
|
6053
|
-
nextToken: external_exports.string().trim().min(1).max(4096).optional().nullable(),
|
|
6054
|
-
pageSize: external_exports.number().int().min(1).max(100).optional()
|
|
6055
|
-
}).superRefine((value, ctx) => {
|
|
6056
|
-
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
6057
|
-
const parsed = secretProviderConfigPayloadSchema.safeParse({
|
|
6058
|
-
provider: value.provider,
|
|
6059
|
-
config: value.config
|
|
6060
|
-
});
|
|
6061
|
-
if (!parsed.success) {
|
|
6062
|
-
for (const issue of parsed.error.issues) {
|
|
6661
|
+
const seenOptionIds = /* @__PURE__ */ new Set();
|
|
6662
|
+
for (const [index, optionId] of (value.selectedOptionIds ?? []).entries()) {
|
|
6663
|
+
if (seenOptionIds.has(optionId)) {
|
|
6063
6664
|
ctx.addIssue({
|
|
6064
|
-
|
|
6065
|
-
|
|
6665
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6666
|
+
message: "selectedOptionIds must be unique",
|
|
6667
|
+
path: ["selectedOptionIds", index]
|
|
6066
6668
|
});
|
|
6669
|
+
continue;
|
|
6067
6670
|
}
|
|
6671
|
+
seenOptionIds.add(optionId);
|
|
6068
6672
|
}
|
|
6069
6673
|
});
|
|
6070
|
-
var
|
|
6071
|
-
|
|
6072
|
-
name: external_exports.string().trim().min(1).max(160).optional().nullable(),
|
|
6073
|
-
key: external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9_.-]+$/).optional().nullable(),
|
|
6074
|
-
description: external_exports.string().trim().max(500).optional().nullable(),
|
|
6075
|
-
providerVersionRef: external_exports.string().trim().min(1).max(512).optional().nullable(),
|
|
6076
|
-
providerMetadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
6674
|
+
var rejectIssueThreadInteractionSchema = external_exports.object({
|
|
6675
|
+
reason: external_exports.string().trim().max(4e3).optional()
|
|
6077
6676
|
});
|
|
6078
|
-
var
|
|
6079
|
-
|
|
6080
|
-
|
|
6677
|
+
var cancelIssueThreadInteractionSchema = external_exports.object({
|
|
6678
|
+
reason: external_exports.string().trim().max(4e3).optional()
|
|
6679
|
+
});
|
|
6680
|
+
var respondIssueThreadInteractionSchema = external_exports.object({
|
|
6681
|
+
answers: external_exports.array(askUserQuestionsAnswerSchema).max(20),
|
|
6682
|
+
summaryMarkdown: multilineTextSchema.pipe(external_exports.string().max(2e4)).nullable().optional()
|
|
6683
|
+
});
|
|
6684
|
+
var linkIssueApprovalSchema = external_exports.object({
|
|
6685
|
+
approvalId: external_exports.string().uuid()
|
|
6686
|
+
});
|
|
6687
|
+
var createIssueAttachmentMetadataSchema = external_exports.object({
|
|
6688
|
+
issueCommentId: external_exports.string().uuid().optional().nullable()
|
|
6689
|
+
});
|
|
6690
|
+
var ISSUE_DOCUMENT_FORMATS = ["markdown"];
|
|
6691
|
+
var issueDocumentFormatSchema = external_exports.enum(ISSUE_DOCUMENT_FORMATS);
|
|
6692
|
+
var upsertIssueDocumentSchema = external_exports.object({
|
|
6693
|
+
title: external_exports.string().trim().max(200).nullable().optional(),
|
|
6694
|
+
format: issueDocumentFormatSchema,
|
|
6695
|
+
body: multilineTextSchema.pipe(external_exports.string().max(524288)),
|
|
6696
|
+
changeSummary: external_exports.string().trim().max(500).nullable().optional(),
|
|
6697
|
+
baseRevisionId: external_exports.string().uuid().nullable().optional()
|
|
6698
|
+
});
|
|
6699
|
+
var restoreIssueDocumentRevisionSchema = external_exports.object({});
|
|
6700
|
+
|
|
6701
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/routine-variables.js
|
|
6702
|
+
var HUMAN_TIMESTAMP_FORMATTER = new Intl.DateTimeFormat("en-US", {
|
|
6703
|
+
year: "numeric",
|
|
6704
|
+
month: "long",
|
|
6705
|
+
day: "numeric",
|
|
6706
|
+
hour: "numeric",
|
|
6707
|
+
minute: "2-digit",
|
|
6708
|
+
hour12: true,
|
|
6709
|
+
timeZone: "UTC",
|
|
6710
|
+
timeZoneName: "short"
|
|
6081
6711
|
});
|
|
6712
|
+
function isValidRoutineDateString(value) {
|
|
6713
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
|
|
6714
|
+
if (!match)
|
|
6715
|
+
return false;
|
|
6716
|
+
const year = Number(match[1]);
|
|
6717
|
+
const month = Number(match[2]);
|
|
6718
|
+
const day = Number(match[3]);
|
|
6719
|
+
if (month < 1 || month > 12)
|
|
6720
|
+
return false;
|
|
6721
|
+
const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
6722
|
+
const daysInMonth = [
|
|
6723
|
+
31,
|
|
6724
|
+
leapYear ? 29 : 28,
|
|
6725
|
+
31,
|
|
6726
|
+
30,
|
|
6727
|
+
31,
|
|
6728
|
+
30,
|
|
6729
|
+
31,
|
|
6730
|
+
31,
|
|
6731
|
+
30,
|
|
6732
|
+
31,
|
|
6733
|
+
30,
|
|
6734
|
+
31
|
|
6735
|
+
][month - 1];
|
|
6736
|
+
return day >= 1 && day <= daysInMonth;
|
|
6737
|
+
}
|
|
6082
6738
|
|
|
6083
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
6739
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/routine.js
|
|
6084
6740
|
var routineVariableValueSchema = external_exports.union([external_exports.string(), external_exports.number().finite(), external_exports.boolean()]);
|
|
6085
6741
|
var routineVariableSchema = external_exports.object({
|
|
6086
6742
|
name: external_exports.string().trim().regex(/^[A-Za-z][A-Za-z0-9_]*$/),
|
|
@@ -6113,6 +6769,15 @@ var routineVariableSchema = external_exports.object({
|
|
|
6113
6769
|
});
|
|
6114
6770
|
}
|
|
6115
6771
|
}
|
|
6772
|
+
if (value.type === "date" && value.defaultValue != null) {
|
|
6773
|
+
if (typeof value.defaultValue !== "string" || !isValidRoutineDateString(value.defaultValue)) {
|
|
6774
|
+
ctx.addIssue({
|
|
6775
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6776
|
+
path: ["defaultValue"],
|
|
6777
|
+
message: "Date variable defaults must be valid YYYY-MM-DD calendar dates"
|
|
6778
|
+
});
|
|
6779
|
+
}
|
|
6780
|
+
}
|
|
6116
6781
|
});
|
|
6117
6782
|
var createRoutineSchema = external_exports.object({
|
|
6118
6783
|
projectId: external_exports.string().uuid().optional().nullable(),
|
|
@@ -6145,7 +6810,8 @@ var routineRevisionSnapshotRoutineV1Schema = external_exports.object({
|
|
|
6145
6810
|
concurrencyPolicy: external_exports.enum(ROUTINE_CONCURRENCY_POLICIES),
|
|
6146
6811
|
catchUpPolicy: external_exports.enum(ROUTINE_CATCH_UP_POLICIES),
|
|
6147
6812
|
variables: external_exports.array(routineVariableSchema),
|
|
6148
|
-
env: envConfigSchema.nullable().default(null)
|
|
6813
|
+
env: envConfigSchema.nullable().default(null),
|
|
6814
|
+
responsibleUserId: external_exports.string().nullable().default(null)
|
|
6149
6815
|
}).strict();
|
|
6150
6816
|
var routineRevisionSnapshotTriggerV1Schema = external_exports.object({
|
|
6151
6817
|
id: external_exports.string().uuid(),
|
|
@@ -6195,6 +6861,7 @@ var runRoutineSchema = external_exports.object({
|
|
|
6195
6861
|
payload: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
6196
6862
|
variables: external_exports.record(external_exports.string(), routineVariableValueSchema).optional().nullable(),
|
|
6197
6863
|
projectId: external_exports.string().uuid().optional().nullable(),
|
|
6864
|
+
projectWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
6198
6865
|
assigneeAgentId: external_exports.string().uuid().optional().nullable(),
|
|
6199
6866
|
idempotencyKey: external_exports.string().trim().max(255).optional().nullable(),
|
|
6200
6867
|
source: external_exports.enum(["manual", "api"]).optional().default("manual"),
|
|
@@ -6204,7 +6871,7 @@ var runRoutineSchema = external_exports.object({
|
|
|
6204
6871
|
});
|
|
6205
6872
|
var rotateRoutineTriggerSecretSchema = external_exports.object({});
|
|
6206
6873
|
|
|
6207
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
6874
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/company-portability.js
|
|
6208
6875
|
var portabilityIncludeSchema = external_exports.object({
|
|
6209
6876
|
company: external_exports.boolean().optional(),
|
|
6210
6877
|
agents: external_exports.boolean().optional(),
|
|
@@ -6425,13 +7092,219 @@ var portabilityAdapterOverrideSchema = external_exports.object({
|
|
|
6425
7092
|
adapterConfig: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
6426
7093
|
});
|
|
6427
7094
|
var companyPortabilityImportSchema = companyPortabilityPreviewSchema.extend({
|
|
6428
|
-
adapterOverrides: external_exports.record(external_exports.string().min(1), portabilityAdapterOverrideSchema).optional()
|
|
7095
|
+
adapterOverrides: external_exports.record(external_exports.string().min(1), portabilityAdapterOverrideSchema).optional(),
|
|
7096
|
+
secretValues: external_exports.record(external_exports.string().min(1), external_exports.string()).optional()
|
|
6429
7097
|
});
|
|
6430
7098
|
|
|
6431
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
6432
|
-
var
|
|
6433
|
-
|
|
7099
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/teams-catalog.js
|
|
7100
|
+
var catalogTeamKindSchema = external_exports.enum(["bundled", "optional"]);
|
|
7101
|
+
var catalogTeamTrustLevelSchema = external_exports.enum([
|
|
7102
|
+
"markdown_only",
|
|
7103
|
+
"assets",
|
|
7104
|
+
"scripts_executables",
|
|
7105
|
+
"external_sources"
|
|
7106
|
+
]);
|
|
7107
|
+
var catalogTeamCompatibilitySchema = external_exports.enum(["compatible", "unknown", "invalid"]);
|
|
7108
|
+
var catalogTeamFileKindSchema = external_exports.enum([
|
|
7109
|
+
"team",
|
|
7110
|
+
"agent",
|
|
7111
|
+
"project",
|
|
7112
|
+
"task",
|
|
7113
|
+
"skill",
|
|
7114
|
+
"extension",
|
|
7115
|
+
"readme",
|
|
7116
|
+
"reference",
|
|
7117
|
+
"script",
|
|
7118
|
+
"asset",
|
|
7119
|
+
"markdown",
|
|
7120
|
+
"other"
|
|
7121
|
+
]);
|
|
7122
|
+
var catalogTeamSkillRequirementTypeSchema = external_exports.enum([
|
|
7123
|
+
"catalog",
|
|
7124
|
+
"local",
|
|
7125
|
+
"skills_sh",
|
|
7126
|
+
"github",
|
|
7127
|
+
"url",
|
|
7128
|
+
"local_path",
|
|
7129
|
+
"agent_package"
|
|
7130
|
+
]);
|
|
7131
|
+
var catalogTeamSkillRequirementSchema = external_exports.object({
|
|
7132
|
+
type: catalogTeamSkillRequirementTypeSchema,
|
|
7133
|
+
ref: external_exports.string().min(1),
|
|
7134
|
+
agentSlugs: external_exports.array(external_exports.string().min(1)),
|
|
7135
|
+
resolved: external_exports.boolean(),
|
|
7136
|
+
catalogSkillId: external_exports.string().min(1).optional(),
|
|
7137
|
+
catalogSkillKey: external_exports.string().min(1).optional(),
|
|
7138
|
+
localPath: external_exports.string().min(1).optional(),
|
|
7139
|
+
sourceLocator: external_exports.string().min(1).optional(),
|
|
7140
|
+
sourceRef: external_exports.string().min(1).optional()
|
|
7141
|
+
});
|
|
7142
|
+
var catalogTeamEnvInputSummarySchema = external_exports.object({
|
|
7143
|
+
key: external_exports.string().min(1),
|
|
7144
|
+
agentSlug: external_exports.string().min(1).nullable(),
|
|
7145
|
+
projectSlug: external_exports.string().min(1).nullable(),
|
|
7146
|
+
kind: external_exports.enum(["secret", "plain"]),
|
|
7147
|
+
requirement: external_exports.enum(["required", "optional"])
|
|
7148
|
+
});
|
|
7149
|
+
var catalogTeamSourceRefSchema = external_exports.object({
|
|
7150
|
+
type: external_exports.enum(["skills_sh", "github", "url", "local_path", "agent_package", "include"]),
|
|
7151
|
+
ref: external_exports.string().min(1),
|
|
7152
|
+
pinned: external_exports.boolean()
|
|
7153
|
+
});
|
|
7154
|
+
var catalogTeamFileSchema = external_exports.object({
|
|
7155
|
+
path: external_exports.string().min(1),
|
|
7156
|
+
kind: catalogTeamFileKindSchema,
|
|
7157
|
+
sizeBytes: external_exports.number().int().nonnegative(),
|
|
7158
|
+
sha256: external_exports.string().min(1)
|
|
7159
|
+
});
|
|
7160
|
+
var catalogTeamSchema = external_exports.object({
|
|
7161
|
+
id: external_exports.string().min(1),
|
|
7162
|
+
key: external_exports.string().min(1),
|
|
7163
|
+
kind: catalogTeamKindSchema,
|
|
7164
|
+
category: external_exports.string().min(1),
|
|
7165
|
+
slug: external_exports.string().min(1),
|
|
7166
|
+
name: external_exports.string().min(1),
|
|
7167
|
+
description: external_exports.string(),
|
|
7168
|
+
path: external_exports.string().min(1),
|
|
7169
|
+
entrypoint: external_exports.literal("TEAM.md"),
|
|
7170
|
+
schema: external_exports.literal("agentcompanies/v1"),
|
|
7171
|
+
defaultInstall: external_exports.boolean(),
|
|
7172
|
+
recommendedForCompanyTypes: external_exports.array(external_exports.string()),
|
|
7173
|
+
tags: external_exports.array(external_exports.string()),
|
|
7174
|
+
counts: external_exports.object({
|
|
7175
|
+
agents: external_exports.number().int().nonnegative(),
|
|
7176
|
+
projects: external_exports.number().int().nonnegative(),
|
|
7177
|
+
tasks: external_exports.number().int().nonnegative(),
|
|
7178
|
+
routines: external_exports.number().int().nonnegative(),
|
|
7179
|
+
localSkills: external_exports.number().int().nonnegative(),
|
|
7180
|
+
catalogSkills: external_exports.number().int().nonnegative(),
|
|
7181
|
+
externalSkillSources: external_exports.number().int().nonnegative()
|
|
7182
|
+
}),
|
|
7183
|
+
rootAgentSlugs: external_exports.array(external_exports.string()),
|
|
7184
|
+
agentSlugs: external_exports.array(external_exports.string()),
|
|
7185
|
+
projectSlugs: external_exports.array(external_exports.string()),
|
|
7186
|
+
requiredSkills: external_exports.array(catalogTeamSkillRequirementSchema),
|
|
7187
|
+
envInputs: external_exports.array(catalogTeamEnvInputSummarySchema),
|
|
7188
|
+
sourceRefs: external_exports.array(catalogTeamSourceRefSchema),
|
|
7189
|
+
files: external_exports.array(catalogTeamFileSchema),
|
|
7190
|
+
trustLevel: catalogTeamTrustLevelSchema,
|
|
7191
|
+
compatibility: catalogTeamCompatibilitySchema,
|
|
7192
|
+
contentHash: external_exports.string().min(1),
|
|
7193
|
+
packageName: external_exports.string().min(1).optional(),
|
|
7194
|
+
packageVersion: external_exports.string().min(1).optional()
|
|
7195
|
+
});
|
|
7196
|
+
var catalogTeamListQuerySchema = external_exports.object({
|
|
7197
|
+
kind: catalogTeamKindSchema.optional(),
|
|
7198
|
+
category: external_exports.string().min(1).optional(),
|
|
7199
|
+
q: external_exports.string().min(1).optional()
|
|
7200
|
+
});
|
|
7201
|
+
var catalogTeamFileDetailSchema = external_exports.object({
|
|
7202
|
+
catalogTeamId: external_exports.string().min(1),
|
|
7203
|
+
path: external_exports.string().min(1),
|
|
7204
|
+
kind: catalogTeamFileKindSchema,
|
|
7205
|
+
content: external_exports.string(),
|
|
7206
|
+
language: external_exports.string().nullable(),
|
|
7207
|
+
markdown: external_exports.boolean()
|
|
7208
|
+
});
|
|
7209
|
+
var catalogTeamSourcePolicySchema = external_exports.object({
|
|
7210
|
+
allowExternalSources: external_exports.boolean().optional(),
|
|
7211
|
+
allowUnpinnedOptionalSources: external_exports.boolean().optional(),
|
|
7212
|
+
allowLocalPathSources: external_exports.boolean().optional()
|
|
7213
|
+
}).strict();
|
|
7214
|
+
var catalogTeamPreviewSchema = external_exports.object({
|
|
7215
|
+
targetManagerAgentId: external_exports.string().min(1).nullable().optional(),
|
|
7216
|
+
targetManagerSlug: external_exports.string().min(1).nullable().optional(),
|
|
7217
|
+
include: portabilityIncludeSchema.omit({ company: true }).strict().optional(),
|
|
7218
|
+
agents: portabilityAgentSelectionSchema.optional(),
|
|
7219
|
+
collisionStrategy: portabilityCollisionStrategySchema.optional(),
|
|
7220
|
+
nameOverrides: external_exports.record(external_exports.string().min(1), external_exports.string().min(1)).optional(),
|
|
7221
|
+
selectedFiles: external_exports.array(external_exports.string().min(1)).optional(),
|
|
7222
|
+
sourcePolicy: catalogTeamSourcePolicySchema.optional()
|
|
7223
|
+
}).strict();
|
|
7224
|
+
var catalogTeamInstallSchema = catalogTeamPreviewSchema.extend({
|
|
7225
|
+
adapterOverrides: external_exports.record(external_exports.string().min(1), portabilityAdapterOverrideSchema).optional(),
|
|
7226
|
+
secretValues: external_exports.record(external_exports.string().min(1), external_exports.string()).optional()
|
|
7227
|
+
}).strict();
|
|
7228
|
+
var catalogTeamSkillPreparationSchema = external_exports.object({
|
|
7229
|
+
type: catalogTeamSkillRequirementTypeSchema,
|
|
7230
|
+
ref: external_exports.string().min(1),
|
|
7231
|
+
agentSlugs: external_exports.array(external_exports.string().min(1)),
|
|
7232
|
+
action: external_exports.enum([
|
|
7233
|
+
"already_in_package",
|
|
7234
|
+
"catalog_install_required",
|
|
7235
|
+
"external_import_required",
|
|
7236
|
+
"blocked"
|
|
7237
|
+
]),
|
|
7238
|
+
catalogSkillId: external_exports.string().min(1).nullable(),
|
|
7239
|
+
catalogSkillKey: external_exports.string().min(1).nullable(),
|
|
7240
|
+
sourceLocator: external_exports.string().min(1).nullable(),
|
|
7241
|
+
sourceRef: external_exports.string().min(1).nullable(),
|
|
7242
|
+
reason: external_exports.string().min(1).nullable()
|
|
7243
|
+
});
|
|
7244
|
+
|
|
7245
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/adapter-skills.js
|
|
7246
|
+
var agentSkillStateSchema = external_exports.enum([
|
|
7247
|
+
"available",
|
|
7248
|
+
"configured",
|
|
7249
|
+
"installed",
|
|
7250
|
+
"missing",
|
|
7251
|
+
"stale",
|
|
7252
|
+
"external"
|
|
7253
|
+
]);
|
|
7254
|
+
var agentSkillOriginSchema = external_exports.enum([
|
|
7255
|
+
"company_managed",
|
|
7256
|
+
"user_installed",
|
|
7257
|
+
"external_unknown"
|
|
7258
|
+
]);
|
|
7259
|
+
var agentSkillSyncModeSchema = external_exports.enum([
|
|
7260
|
+
"unsupported",
|
|
7261
|
+
"persistent",
|
|
7262
|
+
"ephemeral"
|
|
7263
|
+
]);
|
|
7264
|
+
var agentDesiredSkillEntrySchema = external_exports.object({
|
|
7265
|
+
key: external_exports.string().min(1),
|
|
7266
|
+
versionId: external_exports.string().uuid().nullable()
|
|
7267
|
+
});
|
|
7268
|
+
var agentDesiredSkillSelectionSchema = external_exports.union([
|
|
7269
|
+
external_exports.string().min(1),
|
|
7270
|
+
agentDesiredSkillEntrySchema
|
|
7271
|
+
]);
|
|
7272
|
+
var agentSkillEntrySchema = external_exports.object({
|
|
7273
|
+
key: external_exports.string().min(1),
|
|
7274
|
+
runtimeName: external_exports.string().min(1).nullable(),
|
|
7275
|
+
versionId: external_exports.string().uuid().nullable().optional(),
|
|
7276
|
+
currentVersionId: external_exports.string().uuid().nullable().optional(),
|
|
7277
|
+
desired: external_exports.boolean(),
|
|
7278
|
+
managed: external_exports.boolean(),
|
|
7279
|
+
state: agentSkillStateSchema,
|
|
7280
|
+
origin: agentSkillOriginSchema.optional(),
|
|
7281
|
+
originLabel: external_exports.string().nullable().optional(),
|
|
7282
|
+
locationLabel: external_exports.string().nullable().optional(),
|
|
7283
|
+
readOnly: external_exports.boolean().optional(),
|
|
7284
|
+
sourcePath: external_exports.string().nullable().optional(),
|
|
7285
|
+
targetPath: external_exports.string().nullable().optional(),
|
|
7286
|
+
detail: external_exports.string().nullable().optional()
|
|
7287
|
+
});
|
|
7288
|
+
var agentSkillSnapshotSchema = external_exports.object({
|
|
7289
|
+
adapterType: external_exports.string().min(1),
|
|
7290
|
+
supported: external_exports.boolean(),
|
|
7291
|
+
mode: agentSkillSyncModeSchema,
|
|
7292
|
+
desiredSkills: external_exports.array(external_exports.string().min(1)),
|
|
7293
|
+
desiredSkillEntries: external_exports.array(agentDesiredSkillEntrySchema).optional(),
|
|
7294
|
+
entries: external_exports.array(agentSkillEntrySchema),
|
|
7295
|
+
warnings: external_exports.array(external_exports.string())
|
|
7296
|
+
});
|
|
7297
|
+
var agentSkillSyncSchema = external_exports.object({
|
|
7298
|
+
desiredSkills: external_exports.array(agentDesiredSkillSelectionSchema)
|
|
6434
7299
|
});
|
|
7300
|
+
|
|
7301
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/agent.js
|
|
7302
|
+
var agentPermissionsSchema = external_exports.object({
|
|
7303
|
+
canCreateAgents: external_exports.boolean().optional().default(false),
|
|
7304
|
+
canCreateSkills: external_exports.boolean().optional().default(true),
|
|
7305
|
+
trustPreset: trustPresetSchema.optional(),
|
|
7306
|
+
authorizationPolicy: trustAuthorizationPolicySchema.optional()
|
|
7307
|
+
}).catchall(external_exports.unknown());
|
|
6435
7308
|
var agentInstructionsBundleModeSchema = external_exports.enum(["managed", "external"]);
|
|
6436
7309
|
var updateAgentInstructionsBundleSchema = external_exports.object({
|
|
6437
7310
|
mode: agentInstructionsBundleModeSchema.optional(),
|
|
@@ -6480,7 +7353,7 @@ var createAgentSchema = external_exports.object({
|
|
|
6480
7353
|
icon: external_exports.enum(AGENT_ICON_NAMES).optional().nullable(),
|
|
6481
7354
|
reportsTo: external_exports.string().uuid().optional().nullable(),
|
|
6482
7355
|
capabilities: external_exports.string().optional().nullable(),
|
|
6483
|
-
desiredSkills: external_exports.array(
|
|
7356
|
+
desiredSkills: external_exports.array(agentDesiredSkillSelectionSchema).optional(),
|
|
6484
7357
|
adapterType: agentAdapterTypeSchema,
|
|
6485
7358
|
adapterConfig: adapterConfigSchema.optional().default({}),
|
|
6486
7359
|
instructionsBundle: createAgentInstructionsBundleSchema.optional(),
|
|
@@ -6504,8 +7377,34 @@ var updateAgentInstructionsPathSchema = external_exports.object({
|
|
|
6504
7377
|
path: external_exports.string().trim().min(1).nullable(),
|
|
6505
7378
|
adapterConfigKey: external_exports.string().trim().min(1).optional()
|
|
6506
7379
|
});
|
|
7380
|
+
var taskBridgeAgentKeyScopeSchema = external_exports.object({
|
|
7381
|
+
kind: external_exports.literal("task_bridge"),
|
|
7382
|
+
projectId: external_exports.string().uuid().optional().nullable(),
|
|
7383
|
+
projectIds: external_exports.array(external_exports.string().uuid()).max(50).optional(),
|
|
7384
|
+
parentIssueId: external_exports.string().uuid().optional().nullable(),
|
|
7385
|
+
parentIssueIds: external_exports.array(external_exports.string().uuid()).max(50).optional(),
|
|
7386
|
+
allowedAssigneeAgentIds: external_exports.array(external_exports.string().uuid()).max(50).optional()
|
|
7387
|
+
}).strict().superRefine((value, ctx) => {
|
|
7388
|
+
const hasProjectBoundary = Boolean(value.projectId) || Boolean(value.projectIds?.length);
|
|
7389
|
+
const hasParentBoundary = Boolean(value.parentIssueId) || Boolean(value.parentIssueIds?.length);
|
|
7390
|
+
if (!hasProjectBoundary && !hasParentBoundary) {
|
|
7391
|
+
ctx.addIssue({
|
|
7392
|
+
code: external_exports.ZodIssueCode.custom,
|
|
7393
|
+
message: "task_bridge keys require at least one project or parent issue boundary",
|
|
7394
|
+
path: ["projectId"]
|
|
7395
|
+
});
|
|
7396
|
+
}
|
|
7397
|
+
});
|
|
7398
|
+
var standardAgentKeyScopeSchema = external_exports.object({
|
|
7399
|
+
kind: external_exports.literal("standard")
|
|
7400
|
+
}).strict();
|
|
7401
|
+
var agentApiKeyScopeSchema = external_exports.union([
|
|
7402
|
+
standardAgentKeyScopeSchema,
|
|
7403
|
+
taskBridgeAgentKeyScopeSchema
|
|
7404
|
+
]);
|
|
6507
7405
|
var createAgentKeySchema = external_exports.object({
|
|
6508
|
-
name: external_exports.string().min(1).default("default")
|
|
7406
|
+
name: external_exports.string().min(1).default("default"),
|
|
7407
|
+
scope: agentApiKeyScopeSchema.optional().default({ kind: "standard" })
|
|
6509
7408
|
});
|
|
6510
7409
|
var agentMineInboxQuerySchema = external_exports.object({
|
|
6511
7410
|
userId: external_exports.string().trim().min(1),
|
|
@@ -6534,10 +7433,13 @@ var testAdapterEnvironmentSchema = external_exports.object({
|
|
|
6534
7433
|
});
|
|
6535
7434
|
var updateAgentPermissionsSchema = external_exports.object({
|
|
6536
7435
|
canCreateAgents: external_exports.boolean(),
|
|
6537
|
-
|
|
7436
|
+
canCreateSkills: external_exports.boolean().optional(),
|
|
7437
|
+
canAssignTasks: external_exports.boolean(),
|
|
7438
|
+
trustPreset: trustPresetSchema.optional(),
|
|
7439
|
+
authorizationPolicy: trustAuthorizationPolicySchema.optional()
|
|
6538
7440
|
});
|
|
6539
7441
|
|
|
6540
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7442
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/project.js
|
|
6541
7443
|
var executionWorkspaceStrategySchema2 = external_exports.object({
|
|
6542
7444
|
type: external_exports.enum(["project_primary", "git_worktree", "adapter_managed", "cloud_sandbox"]).optional(),
|
|
6543
7445
|
baseRef: external_exports.string().optional().nullable(),
|
|
@@ -6557,7 +7459,8 @@ var projectExecutionWorkspacePolicySchema = external_exports.object({
|
|
|
6557
7459
|
branchPolicy: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
6558
7460
|
pullRequestPolicy: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
6559
7461
|
runtimePolicy: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
6560
|
-
cleanupPolicy: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
7462
|
+
cleanupPolicy: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
7463
|
+
authorizationPolicy: trustAuthorizationPolicySchema.optional().nullable()
|
|
6561
7464
|
}).strict();
|
|
6562
7465
|
var projectWorkspaceRuntimeConfigSchema = external_exports.object({
|
|
6563
7466
|
workspaceRuntime: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
@@ -6623,6 +7526,7 @@ var projectFields = {
|
|
|
6623
7526
|
leadAgentId: external_exports.string().uuid().optional().nullable(),
|
|
6624
7527
|
targetDate: external_exports.string().optional().nullable(),
|
|
6625
7528
|
color: external_exports.string().optional().nullable(),
|
|
7529
|
+
icon: external_exports.enum(PROJECT_ICON_NAMES).optional().nullable(),
|
|
6626
7530
|
env: envConfigSchema.optional().nullable(),
|
|
6627
7531
|
executionWorkspacePolicy: projectExecutionWorkspacePolicySchema.optional().nullable(),
|
|
6628
7532
|
archivedAt: external_exports.string().datetime().optional().nullable()
|
|
@@ -6633,7 +7537,7 @@ var createProjectSchema = external_exports.object({
|
|
|
6633
7537
|
});
|
|
6634
7538
|
var updateProjectSchema = external_exports.object(projectFields).partial();
|
|
6635
7539
|
|
|
6636
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7540
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/document-annotation.js
|
|
6637
7541
|
var documentAnnotationThreadStatusSchema = external_exports.enum(DOCUMENT_ANNOTATION_THREAD_STATUSES);
|
|
6638
7542
|
var documentAnnotationAnchorStateSchema = external_exports.enum(DOCUMENT_ANNOTATION_ANCHOR_STATES);
|
|
6639
7543
|
var documentAnnotationAnchorConfidenceSchema = external_exports.enum(DOCUMENT_ANNOTATION_ANCHOR_CONFIDENCES);
|
|
@@ -6671,10 +7575,12 @@ var createDocumentAnnotationThreadSchema = external_exports.object({
|
|
|
6671
7575
|
baseRevisionId: external_exports.string().uuid(),
|
|
6672
7576
|
baseRevisionNumber: external_exports.number().int().positive(),
|
|
6673
7577
|
selector: documentAnnotationAnchorSelectorSchema,
|
|
6674
|
-
body: multilineTextSchema.pipe(external_exports.string().min(1).max(2e4))
|
|
7578
|
+
body: multilineTextSchema.pipe(external_exports.string().min(1).max(2e4)),
|
|
7579
|
+
issueCommentId: external_exports.string().uuid().nullable().optional()
|
|
6675
7580
|
}).strict();
|
|
6676
7581
|
var createDocumentAnnotationCommentSchema = external_exports.object({
|
|
6677
|
-
body: multilineTextSchema.pipe(external_exports.string().min(1).max(2e4))
|
|
7582
|
+
body: multilineTextSchema.pipe(external_exports.string().min(1).max(2e4)),
|
|
7583
|
+
issueCommentId: external_exports.string().uuid().nullable().optional()
|
|
6678
7584
|
}).strict();
|
|
6679
7585
|
var updateDocumentAnnotationThreadSchema = external_exports.object({
|
|
6680
7586
|
status: documentAnnotationThreadStatusSchema.optional()
|
|
@@ -6682,7 +7588,7 @@ var updateDocumentAnnotationThreadSchema = external_exports.object({
|
|
|
6682
7588
|
message: "At least one field must be provided"
|
|
6683
7589
|
});
|
|
6684
7590
|
|
|
6685
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7591
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/search.js
|
|
6686
7592
|
var COMPANY_SEARCH_MAX_QUERY_LENGTH = 200;
|
|
6687
7593
|
var COMPANY_SEARCH_DEFAULT_LIMIT = 20;
|
|
6688
7594
|
var COMPANY_SEARCH_MAX_LIMIT = 50;
|
|
@@ -6704,7 +7610,7 @@ var companySearchQuerySchema = external_exports.object({
|
|
|
6704
7610
|
offset: external_exports.unknown().optional().transform((value) => clampInteger(value, 0, 0, COMPANY_SEARCH_MAX_OFFSET))
|
|
6705
7611
|
});
|
|
6706
7612
|
|
|
6707
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7613
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/issue-tree-control.js
|
|
6708
7614
|
var issueTreeControlModeSchema = external_exports.enum(ISSUE_TREE_CONTROL_MODES);
|
|
6709
7615
|
var issueTreeHoldReleasePolicySchema = external_exports.object({
|
|
6710
7616
|
strategy: external_exports.enum(ISSUE_TREE_HOLD_RELEASE_POLICY_STRATEGIES).default("manual"),
|
|
@@ -6726,7 +7632,96 @@ var releaseIssueTreeHoldSchema = external_exports.object({
|
|
|
6726
7632
|
metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable()
|
|
6727
7633
|
}).strict();
|
|
6728
7634
|
|
|
6729
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7635
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/workspace-file-resource.js
|
|
7636
|
+
var workspaceFileListSearchMaxBytes = 128;
|
|
7637
|
+
function utf8ByteLength(value) {
|
|
7638
|
+
return new TextEncoder().encode(value).length;
|
|
7639
|
+
}
|
|
7640
|
+
var workspaceFileWorkspaceKindSchema = external_exports.enum(["execution_workspace", "project_workspace"]);
|
|
7641
|
+
var workspaceFileSelectorSchema = external_exports.enum(["auto", "execution", "project"]).default("auto");
|
|
7642
|
+
var workspaceFileListModeSchema = external_exports.enum(["all", "recent", "changed"]).default("all");
|
|
7643
|
+
var workspaceFilePreviewKindSchema = external_exports.enum(["text", "image", "video", "pdf", "unsupported"]);
|
|
7644
|
+
var workspaceFileResourceKindSchema = external_exports.enum(["file", "directory", "remote_resource"]);
|
|
7645
|
+
var workspaceFileRefSchema = external_exports.object({
|
|
7646
|
+
kind: external_exports.literal("workspace_file"),
|
|
7647
|
+
issueId: external_exports.string().uuid().optional(),
|
|
7648
|
+
projectId: external_exports.string().uuid().optional(),
|
|
7649
|
+
projectName: external_exports.string().min(1).optional(),
|
|
7650
|
+
workspaceKind: workspaceFileWorkspaceKindSchema,
|
|
7651
|
+
workspaceId: external_exports.string().uuid(),
|
|
7652
|
+
relativePath: external_exports.string().min(1),
|
|
7653
|
+
line: external_exports.number().int().positive().nullable().optional(),
|
|
7654
|
+
column: external_exports.number().int().positive().nullable().optional(),
|
|
7655
|
+
displayPath: external_exports.string().min(1)
|
|
7656
|
+
});
|
|
7657
|
+
var workspaceFileResourceQuerySchema = external_exports.object({
|
|
7658
|
+
projectId: external_exports.string().uuid().optional(),
|
|
7659
|
+
workspaceId: external_exports.string().uuid().optional(),
|
|
7660
|
+
path: external_exports.string().min(1).refine((value) => !/[\x00-\x1f\x7f]/.test(value), {
|
|
7661
|
+
message: "Workspace file path contains an invalid character",
|
|
7662
|
+
params: { code: "invalid_path" }
|
|
7663
|
+
}),
|
|
7664
|
+
workspace: workspaceFileSelectorSchema.optional()
|
|
7665
|
+
}).refine((value) => Boolean(value.projectId) === Boolean(value.workspaceId), {
|
|
7666
|
+
message: "Workspace file target requires both projectId and workspaceId",
|
|
7667
|
+
path: ["workspaceId"],
|
|
7668
|
+
params: { code: "invalid_target" }
|
|
7669
|
+
});
|
|
7670
|
+
var workspaceFileListQuerySchema = external_exports.object({
|
|
7671
|
+
projectId: external_exports.string().uuid().optional(),
|
|
7672
|
+
workspaceId: external_exports.string().uuid().optional(),
|
|
7673
|
+
workspace: workspaceFileSelectorSchema.optional(),
|
|
7674
|
+
path: external_exports.string().min(1).refine((value) => !/[\x00-\x1f\x7f]/.test(value), {
|
|
7675
|
+
message: "Workspace folder path contains an invalid character",
|
|
7676
|
+
params: { code: "invalid_path" }
|
|
7677
|
+
}).optional(),
|
|
7678
|
+
mode: workspaceFileListModeSchema.optional(),
|
|
7679
|
+
q: external_exports.string().refine((value) => !/[\x00-\x1f\x7f]/.test(value), {
|
|
7680
|
+
message: "Workspace file search contains an invalid character",
|
|
7681
|
+
params: { code: "invalid_query" }
|
|
7682
|
+
}).refine((value) => utf8ByteLength(value.trim()) <= workspaceFileListSearchMaxBytes, {
|
|
7683
|
+
message: "Workspace file search is too long",
|
|
7684
|
+
params: { code: "invalid_query" }
|
|
7685
|
+
}).optional(),
|
|
7686
|
+
limit: external_exports.coerce.number().int().min(1).max(100).default(25),
|
|
7687
|
+
offset: external_exports.coerce.number().int().min(0).max(1e4).default(0)
|
|
7688
|
+
}).refine((value) => Boolean(value.projectId) === Boolean(value.workspaceId), {
|
|
7689
|
+
message: "Workspace file target requires both projectId and workspaceId",
|
|
7690
|
+
path: ["workspaceId"],
|
|
7691
|
+
params: { code: "invalid_target" }
|
|
7692
|
+
});
|
|
7693
|
+
var resolvedWorkspaceResourceSchema = external_exports.object({
|
|
7694
|
+
kind: workspaceFileResourceKindSchema,
|
|
7695
|
+
provider: external_exports.string().min(1),
|
|
7696
|
+
title: external_exports.string().min(1),
|
|
7697
|
+
displayPath: external_exports.string().min(1),
|
|
7698
|
+
workspaceLabel: external_exports.string().min(1),
|
|
7699
|
+
workspaceKind: workspaceFileWorkspaceKindSchema,
|
|
7700
|
+
workspaceId: external_exports.string().uuid(),
|
|
7701
|
+
projectId: external_exports.string().uuid().nullable().optional(),
|
|
7702
|
+
projectName: external_exports.string().min(1).nullable().optional(),
|
|
7703
|
+
contentType: external_exports.string().nullable().optional(),
|
|
7704
|
+
byteSize: external_exports.number().int().nonnegative().nullable().optional(),
|
|
7705
|
+
previewKind: workspaceFilePreviewKindSchema,
|
|
7706
|
+
denialReason: external_exports.string().nullable().optional(),
|
|
7707
|
+
capabilities: external_exports.object({
|
|
7708
|
+
preview: external_exports.boolean(),
|
|
7709
|
+
download: external_exports.boolean(),
|
|
7710
|
+
listChildren: external_exports.boolean()
|
|
7711
|
+
})
|
|
7712
|
+
});
|
|
7713
|
+
var workspaceFileContentSchema = external_exports.object({
|
|
7714
|
+
resource: resolvedWorkspaceResourceSchema,
|
|
7715
|
+
content: external_exports.object({
|
|
7716
|
+
encoding: external_exports.enum(["utf8", "base64"]),
|
|
7717
|
+
data: external_exports.string()
|
|
7718
|
+
})
|
|
7719
|
+
});
|
|
7720
|
+
|
|
7721
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/work-product.js
|
|
7722
|
+
function attachmentContentPath(attachmentId) {
|
|
7723
|
+
return `/api/attachments/${attachmentId}/content`;
|
|
7724
|
+
}
|
|
6730
7725
|
var issueWorkProductTypeSchema = external_exports.enum([
|
|
6731
7726
|
"preview_url",
|
|
6732
7727
|
"runtime_service",
|
|
@@ -6753,6 +7748,41 @@ var issueWorkProductReviewStateSchema = external_exports.enum([
|
|
|
6753
7748
|
"approved",
|
|
6754
7749
|
"changes_requested"
|
|
6755
7750
|
]);
|
|
7751
|
+
var attachmentArtifactWorkProductMetadataSchema = external_exports.object({
|
|
7752
|
+
attachmentId: external_exports.string().uuid(),
|
|
7753
|
+
contentType: external_exports.string().min(1),
|
|
7754
|
+
byteSize: external_exports.number().int().nonnegative(),
|
|
7755
|
+
contentPath: external_exports.string().min(1),
|
|
7756
|
+
openPath: external_exports.string().min(1),
|
|
7757
|
+
downloadPath: external_exports.string().min(1),
|
|
7758
|
+
originalFilename: external_exports.string().optional().nullable()
|
|
7759
|
+
}).superRefine((value, ctx) => {
|
|
7760
|
+
const contentPath = attachmentContentPath(value.attachmentId);
|
|
7761
|
+
if (value.contentPath !== contentPath) {
|
|
7762
|
+
ctx.addIssue({
|
|
7763
|
+
code: external_exports.ZodIssueCode.custom,
|
|
7764
|
+
path: ["contentPath"],
|
|
7765
|
+
message: "contentPath must point to the same-origin attachment content route"
|
|
7766
|
+
});
|
|
7767
|
+
}
|
|
7768
|
+
if (value.openPath !== contentPath) {
|
|
7769
|
+
ctx.addIssue({
|
|
7770
|
+
code: external_exports.ZodIssueCode.custom,
|
|
7771
|
+
path: ["openPath"],
|
|
7772
|
+
message: "openPath must point to the same-origin attachment content route"
|
|
7773
|
+
});
|
|
7774
|
+
}
|
|
7775
|
+
if (value.downloadPath !== `${contentPath}?download=1`) {
|
|
7776
|
+
ctx.addIssue({
|
|
7777
|
+
code: external_exports.ZodIssueCode.custom,
|
|
7778
|
+
path: ["downloadPath"],
|
|
7779
|
+
message: "downloadPath must point to the same-origin attachment download route"
|
|
7780
|
+
});
|
|
7781
|
+
}
|
|
7782
|
+
});
|
|
7783
|
+
var issueWorkProductMetadataSchema = external_exports.object({
|
|
7784
|
+
resourceRef: workspaceFileRefSchema.optional().nullable()
|
|
7785
|
+
}).passthrough();
|
|
6756
7786
|
var createIssueWorkProductSchema = external_exports.object({
|
|
6757
7787
|
projectId: external_exports.string().uuid().optional().nullable(),
|
|
6758
7788
|
executionWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
@@ -6767,12 +7797,76 @@ var createIssueWorkProductSchema = external_exports.object({
|
|
|
6767
7797
|
isPrimary: external_exports.boolean().optional().default(false),
|
|
6768
7798
|
healthStatus: external_exports.enum(["unknown", "healthy", "unhealthy"]).optional().default("unknown"),
|
|
6769
7799
|
summary: external_exports.string().optional().nullable(),
|
|
6770
|
-
metadata:
|
|
7800
|
+
metadata: issueWorkProductMetadataSchema.optional().nullable(),
|
|
6771
7801
|
createdByRunId: external_exports.string().uuid().optional().nullable()
|
|
6772
7802
|
});
|
|
6773
7803
|
var updateIssueWorkProductSchema = createIssueWorkProductSchema.partial();
|
|
6774
7804
|
|
|
6775
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7805
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/artifact.js
|
|
7806
|
+
var COMPANY_ARTIFACTS_DEFAULT_LIMIT = 30;
|
|
7807
|
+
var COMPANY_ARTIFACTS_MAX_LIMIT = 100;
|
|
7808
|
+
var COMPANY_ARTIFACTS_MAX_QUERY_LENGTH = 160;
|
|
7809
|
+
var companyArtifactSourceSchema = external_exports.enum(["document", "attachment", "work_product"]);
|
|
7810
|
+
var companyArtifactMediaKindSchema = external_exports.enum(["image", "video", "text", "document", "file", "empty"]);
|
|
7811
|
+
var companyArtifactGroupBySchema = external_exports.enum(["none", "task", "parent_task"]);
|
|
7812
|
+
var companyArtifactsQuerySchema = external_exports.object({
|
|
7813
|
+
kind: external_exports.enum(["image", "video", "text", "document", "file", "all"]).optional().default("all"),
|
|
7814
|
+
projectId: external_exports.string().uuid().optional(),
|
|
7815
|
+
q: external_exports.string().trim().max(COMPANY_ARTIFACTS_MAX_QUERY_LENGTH).optional(),
|
|
7816
|
+
groupBy: companyArtifactGroupBySchema.optional().default("none"),
|
|
7817
|
+
groupIssueId: external_exports.string().uuid().optional(),
|
|
7818
|
+
limit: external_exports.coerce.number().int().min(1).max(COMPANY_ARTIFACTS_MAX_LIMIT).optional().default(COMPANY_ARTIFACTS_DEFAULT_LIMIT),
|
|
7819
|
+
cursor: external_exports.string().min(1).optional()
|
|
7820
|
+
});
|
|
7821
|
+
var companyArtifactSchema = external_exports.object({
|
|
7822
|
+
id: external_exports.string().min(1),
|
|
7823
|
+
source: companyArtifactSourceSchema,
|
|
7824
|
+
mediaKind: companyArtifactMediaKindSchema,
|
|
7825
|
+
title: external_exports.string(),
|
|
7826
|
+
previewText: external_exports.string().nullable(),
|
|
7827
|
+
contentType: external_exports.string().nullable(),
|
|
7828
|
+
contentPath: external_exports.string().nullable(),
|
|
7829
|
+
openPath: external_exports.string().nullable(),
|
|
7830
|
+
downloadPath: external_exports.string().nullable(),
|
|
7831
|
+
issue: external_exports.object({
|
|
7832
|
+
id: external_exports.string().uuid(),
|
|
7833
|
+
identifier: external_exports.string(),
|
|
7834
|
+
title: external_exports.string()
|
|
7835
|
+
}),
|
|
7836
|
+
project: external_exports.object({
|
|
7837
|
+
id: external_exports.string().uuid(),
|
|
7838
|
+
name: external_exports.string()
|
|
7839
|
+
}).nullable(),
|
|
7840
|
+
createdByAgent: external_exports.object({
|
|
7841
|
+
id: external_exports.string().uuid(),
|
|
7842
|
+
name: external_exports.string()
|
|
7843
|
+
}).nullable(),
|
|
7844
|
+
updatedAt: external_exports.string().datetime(),
|
|
7845
|
+
href: external_exports.string().min(1)
|
|
7846
|
+
});
|
|
7847
|
+
var companyArtifactGroupSchema = external_exports.object({
|
|
7848
|
+
id: external_exports.string().min(1),
|
|
7849
|
+
groupBy: companyArtifactGroupBySchema.exclude(["none"]),
|
|
7850
|
+
issue: external_exports.object({
|
|
7851
|
+
id: external_exports.string().uuid(),
|
|
7852
|
+
identifier: external_exports.string(),
|
|
7853
|
+
title: external_exports.string()
|
|
7854
|
+
}),
|
|
7855
|
+
title: external_exports.string(),
|
|
7856
|
+
count: external_exports.number().int().min(0),
|
|
7857
|
+
mediaKinds: external_exports.array(companyArtifactMediaKindSchema),
|
|
7858
|
+
previewArtifacts: external_exports.array(companyArtifactSchema),
|
|
7859
|
+
updatedAt: external_exports.string().datetime(),
|
|
7860
|
+
href: external_exports.string().min(1)
|
|
7861
|
+
});
|
|
7862
|
+
var companyArtifactsResponseSchema = external_exports.object({
|
|
7863
|
+
artifacts: external_exports.array(companyArtifactSchema),
|
|
7864
|
+
groups: external_exports.array(companyArtifactGroupSchema).optional(),
|
|
7865
|
+
selectedGroup: companyArtifactGroupSchema.nullable().optional(),
|
|
7866
|
+
nextCursor: external_exports.string().nullable()
|
|
7867
|
+
});
|
|
7868
|
+
|
|
7869
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/goal.js
|
|
6776
7870
|
var createGoalSchema = external_exports.object({
|
|
6777
7871
|
title: external_exports.string().min(1),
|
|
6778
7872
|
description: external_exports.string().optional().nullable(),
|
|
@@ -6783,7 +7877,7 @@ var createGoalSchema = external_exports.object({
|
|
|
6783
7877
|
});
|
|
6784
7878
|
var updateGoalSchema = createGoalSchema.partial();
|
|
6785
7879
|
|
|
6786
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7880
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/approval.js
|
|
6787
7881
|
var createApprovalSchema = external_exports.object({
|
|
6788
7882
|
type: external_exports.enum(APPROVAL_TYPES),
|
|
6789
7883
|
requestedByAgentId: external_exports.string().uuid().optional().nullable(),
|
|
@@ -6803,7 +7897,7 @@ var addApprovalCommentSchema = external_exports.object({
|
|
|
6803
7897
|
body: multilineTextSchema.pipe(external_exports.string().min(1))
|
|
6804
7898
|
});
|
|
6805
7899
|
|
|
6806
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7900
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/cost.js
|
|
6807
7901
|
var createCostEventSchema = external_exports.object({
|
|
6808
7902
|
agentId: external_exports.string().uuid(),
|
|
6809
7903
|
issueId: external_exports.string().uuid().optional().nullable(),
|
|
@@ -6828,7 +7922,7 @@ var updateBudgetSchema = external_exports.object({
|
|
|
6828
7922
|
budgetMonthlyCents: external_exports.number().int().nonnegative()
|
|
6829
7923
|
});
|
|
6830
7924
|
|
|
6831
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7925
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/finance.js
|
|
6832
7926
|
var createFinanceEventSchema = external_exports.object({
|
|
6833
7927
|
agentId: external_exports.string().uuid().optional().nullable(),
|
|
6834
7928
|
issueId: external_exports.string().uuid().optional().nullable(),
|
|
@@ -6859,12 +7953,144 @@ var createFinanceEventSchema = external_exports.object({
|
|
|
6859
7953
|
currency: value.currency.toUpperCase()
|
|
6860
7954
|
}));
|
|
6861
7955
|
|
|
6862
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7956
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/asset.js
|
|
6863
7957
|
var createAssetImageMetadataSchema = external_exports.object({
|
|
6864
7958
|
namespace: external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9/_-]+$/).optional()
|
|
6865
7959
|
});
|
|
6866
7960
|
|
|
6867
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7961
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/pipeline.js
|
|
7962
|
+
var routineVariableLikeNameSchema = external_exports.string().trim().regex(/^[A-Za-z][A-Za-z0-9_]*$/);
|
|
7963
|
+
var pipelineStageKindSchema = external_exports.enum(["working", "review", "done", "cancelled"]);
|
|
7964
|
+
var legacyPipelineStageKindSchema = external_exports.enum(["open", "working", "review", "done", "cancelled"]);
|
|
7965
|
+
var pipelineStageApproverSchema = external_exports.object({
|
|
7966
|
+
kind: external_exports.enum(["any_human", "user", "agent"]).optional().default("any_human"),
|
|
7967
|
+
id: external_exports.string().trim().min(1).max(200).optional()
|
|
7968
|
+
}).superRefine((value, ctx) => {
|
|
7969
|
+
if (value.kind !== "any_human" && (typeof value.id !== "string" || value.id.length === 0)) {
|
|
7970
|
+
ctx.addIssue({
|
|
7971
|
+
code: external_exports.ZodIssueCode.custom,
|
|
7972
|
+
path: ["id"],
|
|
7973
|
+
message: "Specific stage approvers require an id"
|
|
7974
|
+
});
|
|
7975
|
+
}
|
|
7976
|
+
});
|
|
7977
|
+
var pipelineStageOnEnterSchema = external_exports.object({
|
|
7978
|
+
type: external_exports.literal("run_routine"),
|
|
7979
|
+
routineId: external_exports.string().uuid(),
|
|
7980
|
+
id: external_exports.string().trim().min(1).max(200).optional(),
|
|
7981
|
+
projectId: external_exports.string().uuid().optional().nullable(),
|
|
7982
|
+
projectWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
7983
|
+
executionWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
7984
|
+
executionWorkspacePreference: external_exports.enum(ISSUE_EXECUTION_WORKSPACE_PREFERENCES).optional().nullable(),
|
|
7985
|
+
executionWorkspaceSettings: issueExecutionWorkspaceSettingsSchema.optional().nullable()
|
|
7986
|
+
}).passthrough();
|
|
7987
|
+
var pipelineStageAutomationSchema = external_exports.object({
|
|
7988
|
+
routineId: external_exports.string().uuid().optional().nullable(),
|
|
7989
|
+
assigneeAgentId: external_exports.string().uuid().optional().nullable(),
|
|
7990
|
+
instructionsBody: external_exports.string().optional().nullable(),
|
|
7991
|
+
projectId: external_exports.string().uuid().optional().nullable(),
|
|
7992
|
+
projectWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
7993
|
+
executionWorkspaceId: external_exports.string().uuid().optional().nullable(),
|
|
7994
|
+
executionWorkspacePreference: external_exports.enum(ISSUE_EXECUTION_WORKSPACE_PREFERENCES).optional().nullable(),
|
|
7995
|
+
executionWorkspaceSettings: issueExecutionWorkspaceSettingsSchema.optional().nullable()
|
|
7996
|
+
}).passthrough();
|
|
7997
|
+
var pipelineStageCarryOverPolicySchema = external_exports.object({
|
|
7998
|
+
version: external_exports.literal(1).default(1),
|
|
7999
|
+
mode: external_exports.enum(["all_except", "only"]).default("all_except"),
|
|
8000
|
+
includeFields: external_exports.array(routineVariableLikeNameSchema).max(100).default([]),
|
|
8001
|
+
excludeFields: external_exports.array(routineVariableLikeNameSchema).max(100).default([])
|
|
8002
|
+
});
|
|
8003
|
+
var pipelineStageBreakdownSchema = external_exports.object({
|
|
8004
|
+
targetPipelineId: external_exports.string().uuid(),
|
|
8005
|
+
targetStageKey: external_exports.string().trim().min(1).max(120),
|
|
8006
|
+
pieceNoun: external_exports.string().trim().min(1).max(80).default("piece"),
|
|
8007
|
+
carryOverPolicy: pipelineStageCarryOverPolicySchema.optional(),
|
|
8008
|
+
inheritFields: external_exports.array(routineVariableLikeNameSchema).max(100).default([]),
|
|
8009
|
+
advanceTo: external_exports.string().trim().min(1).max(120).optional(),
|
|
8010
|
+
waitForPieces: external_exports.boolean().optional().default(false),
|
|
8011
|
+
whenFinishedMoveTo: external_exports.string().trim().min(1).max(120).optional()
|
|
8012
|
+
}).superRefine((value, ctx) => {
|
|
8013
|
+
if (value.waitForPieces && !value.whenFinishedMoveTo) {
|
|
8014
|
+
ctx.addIssue({
|
|
8015
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8016
|
+
path: ["whenFinishedMoveTo"],
|
|
8017
|
+
message: "Breakdown stages that wait for pieces need a destination stage"
|
|
8018
|
+
});
|
|
8019
|
+
}
|
|
8020
|
+
});
|
|
8021
|
+
var pipelineStageVariableSchema = external_exports.object({
|
|
8022
|
+
key: routineVariableLikeNameSchema,
|
|
8023
|
+
label: external_exports.string().trim().max(120),
|
|
8024
|
+
type: external_exports.enum(["select", "text", "multiline"]).default("text"),
|
|
8025
|
+
options: external_exports.array(external_exports.string().trim().min(1).max(120)).max(50).optional().default([]),
|
|
8026
|
+
required: external_exports.boolean().optional().default(false),
|
|
8027
|
+
showInAddForm: external_exports.boolean().optional().default(false)
|
|
8028
|
+
}).superRefine((value, ctx) => {
|
|
8029
|
+
if (value.type === "select" && value.options.length === 0) {
|
|
8030
|
+
ctx.addIssue({
|
|
8031
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8032
|
+
path: ["options"],
|
|
8033
|
+
message: "Select variables require at least one option"
|
|
8034
|
+
});
|
|
8035
|
+
}
|
|
8036
|
+
if (value.type !== "select" && value.options.length > 0) {
|
|
8037
|
+
ctx.addIssue({
|
|
8038
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8039
|
+
path: ["options"],
|
|
8040
|
+
message: "Only select variables can define options"
|
|
8041
|
+
});
|
|
8042
|
+
}
|
|
8043
|
+
});
|
|
8044
|
+
var pipelineStageConfigSchema = external_exports.object({
|
|
8045
|
+
variables: external_exports.array(pipelineStageVariableSchema).default([]),
|
|
8046
|
+
disabled: external_exports.boolean().optional(),
|
|
8047
|
+
disabledReason: external_exports.string().trim().max(1e3).nullable().optional(),
|
|
8048
|
+
requireApproval: external_exports.boolean().optional(),
|
|
8049
|
+
approver: pipelineStageApproverSchema.optional(),
|
|
8050
|
+
/** Legacy input only; the server migrates it to requireApproval/approver. */
|
|
8051
|
+
reviewerKind: external_exports.enum(["human", "any"]).optional(),
|
|
8052
|
+
whatHappensHere: external_exports.string().trim().max(1e4).optional(),
|
|
8053
|
+
onEnter: pipelineStageOnEnterSchema.optional(),
|
|
8054
|
+
automation: pipelineStageAutomationSchema.optional(),
|
|
8055
|
+
breakdown: pipelineStageBreakdownSchema.optional(),
|
|
8056
|
+
approveToStageKey: external_exports.string().trim().min(1).max(120).optional(),
|
|
8057
|
+
rejectToStageKey: external_exports.string().trim().min(1).max(120).optional(),
|
|
8058
|
+
requestChangesToStageKey: external_exports.string().trim().min(1).max(120).optional(),
|
|
8059
|
+
requireRejectReason: external_exports.boolean().optional(),
|
|
8060
|
+
requireRequestChangesReason: external_exports.boolean().optional(),
|
|
8061
|
+
requireChildrenTerminal: external_exports.boolean().optional(),
|
|
8062
|
+
requireNoUnresolvedDrift: external_exports.boolean().optional()
|
|
8063
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
8064
|
+
const keys = /* @__PURE__ */ new Set();
|
|
8065
|
+
value.variables.forEach((variable, index) => {
|
|
8066
|
+
if (keys.has(variable.key)) {
|
|
8067
|
+
ctx.addIssue({
|
|
8068
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8069
|
+
path: ["variables", index, "key"],
|
|
8070
|
+
message: "Pipeline stage variable keys must be unique"
|
|
8071
|
+
});
|
|
8072
|
+
}
|
|
8073
|
+
keys.add(variable.key);
|
|
8074
|
+
});
|
|
8075
|
+
});
|
|
8076
|
+
var pipelineAutomationRetryScopeSchema = external_exports.enum(["current_stage", "previous_stage"]);
|
|
8077
|
+
var pipelineAutomationRetryCleanupOptionsSchema = external_exports.object({
|
|
8078
|
+
retireDirectChildren: external_exports.boolean().default(true),
|
|
8079
|
+
retireDescendants: external_exports.boolean().default(true),
|
|
8080
|
+
cancelLinkedAutomationIssues: external_exports.boolean().default(true)
|
|
8081
|
+
});
|
|
8082
|
+
var pipelineAutomationRetryRequestSchema = external_exports.object({
|
|
8083
|
+
scope: pipelineAutomationRetryScopeSchema,
|
|
8084
|
+
targetStageId: external_exports.string().uuid().nullable().optional(),
|
|
8085
|
+
expectedVersion: external_exports.number().int().positive(),
|
|
8086
|
+
cleanup: pipelineAutomationRetryCleanupOptionsSchema.default({
|
|
8087
|
+
retireDirectChildren: true,
|
|
8088
|
+
retireDescendants: true,
|
|
8089
|
+
cancelLinkedAutomationIssues: true
|
|
8090
|
+
})
|
|
8091
|
+
});
|
|
8092
|
+
|
|
8093
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/access.js
|
|
6868
8094
|
var createCompanyInviteSchema = external_exports.object({
|
|
6869
8095
|
allowedJoinTypes: external_exports.enum(INVITE_JOIN_TYPES).default("both"),
|
|
6870
8096
|
humanRole: external_exports.enum(HUMAN_COMPANY_MEMBERSHIP_ROLES).optional().nullable(),
|
|
@@ -6912,6 +8138,11 @@ var createCliAuthChallengeSchema = external_exports.object({
|
|
|
6912
8138
|
var resolveCliAuthChallengeSchema = external_exports.object({
|
|
6913
8139
|
token: external_exports.string().min(16).max(256)
|
|
6914
8140
|
});
|
|
8141
|
+
var createBoardApiKeySchema = external_exports.object({
|
|
8142
|
+
name: external_exports.string().trim().min(1).max(120).default("paperclipai cli"),
|
|
8143
|
+
expiresAt: external_exports.coerce.date().optional().nullable(),
|
|
8144
|
+
requestedCompanyId: external_exports.string().uuid().optional().nullable()
|
|
8145
|
+
});
|
|
6915
8146
|
var updateMemberPermissionsSchema = external_exports.object({
|
|
6916
8147
|
grants: external_exports.array(external_exports.object({
|
|
6917
8148
|
permissionKey: external_exports.enum(PERMISSION_KEYS),
|
|
@@ -6982,7 +8213,7 @@ var updateCurrentUserProfileSchema = external_exports.object({
|
|
|
6982
8213
|
image: external_exports.union([profileImageSchema, external_exports.literal(""), external_exports.null()]).optional().transform((value) => value === "" ? null : value)
|
|
6983
8214
|
});
|
|
6984
8215
|
|
|
6985
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
8216
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/plugin.js
|
|
6986
8217
|
var jsonSchemaSchema = external_exports.record(external_exports.string(), external_exports.unknown()).refine((val) => {
|
|
6987
8218
|
if (Object.keys(val).length === 0)
|
|
6988
8219
|
return true;
|
|
@@ -7015,11 +8246,45 @@ var pluginToolDeclarationSchema = external_exports.object({
|
|
|
7015
8246
|
description: external_exports.string().min(1),
|
|
7016
8247
|
parametersSchema: jsonSchemaSchema
|
|
7017
8248
|
});
|
|
8249
|
+
var pluginEnvironmentTemplateConfigFieldSchema = external_exports.string().min(1).max(100).regex(/^[A-Za-z_][A-Za-z0-9_-]*$/, "Template config binding fields must be top-level config keys using letters, digits, underscores, or hyphens").refine((value) => value !== "provider", {
|
|
8250
|
+
message: "Template config binding must not replace the sandbox provider key"
|
|
8251
|
+
});
|
|
8252
|
+
var pluginEnvironmentTemplateConfigBindingSchema = external_exports.object({
|
|
8253
|
+
field: pluginEnvironmentTemplateConfigFieldSchema,
|
|
8254
|
+
unsetFields: external_exports.array(pluginEnvironmentTemplateConfigFieldSchema).max(20).optional()
|
|
8255
|
+
}).strict().superRefine((value, ctx) => {
|
|
8256
|
+
const unsetFields = value.unsetFields ?? [];
|
|
8257
|
+
const seen = /* @__PURE__ */ new Set();
|
|
8258
|
+
for (const [index, field] of unsetFields.entries()) {
|
|
8259
|
+
if (field === value.field) {
|
|
8260
|
+
ctx.addIssue({
|
|
8261
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8262
|
+
message: "Template config binding cannot unset the same field it sets",
|
|
8263
|
+
path: ["unsetFields", index]
|
|
8264
|
+
});
|
|
8265
|
+
}
|
|
8266
|
+
if (seen.has(field)) {
|
|
8267
|
+
ctx.addIssue({
|
|
8268
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8269
|
+
message: "Template config binding unsetFields must be unique",
|
|
8270
|
+
path: ["unsetFields", index]
|
|
8271
|
+
});
|
|
8272
|
+
}
|
|
8273
|
+
seen.add(field);
|
|
8274
|
+
}
|
|
8275
|
+
});
|
|
7018
8276
|
var pluginEnvironmentDriverDeclarationSchema = external_exports.object({
|
|
7019
8277
|
driverKey: external_exports.string().min(1).regex(/^[a-z0-9][a-z0-9._-]*$/, "Environment driver key must start with a lowercase alphanumeric and contain only lowercase letters, digits, dots, hyphens, or underscores"),
|
|
7020
8278
|
kind: external_exports.enum(["environment_driver", "sandbox_provider"]).optional(),
|
|
7021
8279
|
displayName: external_exports.string().min(1).max(100),
|
|
7022
8280
|
description: external_exports.string().max(500).optional(),
|
|
8281
|
+
supportsReusableLeases: external_exports.boolean().optional(),
|
|
8282
|
+
supportsInteractiveSetup: external_exports.boolean().optional(),
|
|
8283
|
+
interactiveSetupConnectionTypes: external_exports.array(external_exports.string().min(1).max(100)).max(10).optional(),
|
|
8284
|
+
supportsTemplateCapture: external_exports.boolean().optional(),
|
|
8285
|
+
templateRefKind: external_exports.string().min(1).max(100).optional(),
|
|
8286
|
+
templateConfigBinding: pluginEnvironmentTemplateConfigBindingSchema.optional(),
|
|
8287
|
+
supportsTemplateDelete: external_exports.boolean().optional(),
|
|
7023
8288
|
configSchema: jsonSchemaSchema
|
|
7024
8289
|
});
|
|
7025
8290
|
var pluginManagedAgentDeclarationSchema = external_exports.object({
|
|
@@ -7340,6 +8605,44 @@ var pluginApiRouteDeclarationSchema = external_exports.object({
|
|
|
7340
8605
|
external_exports.object({ from: external_exports.literal("issue"), param: external_exports.string().min(1) })
|
|
7341
8606
|
]).optional()
|
|
7342
8607
|
});
|
|
8608
|
+
var pluginObjectReferenceRefreshPolicySchema = external_exports.object({
|
|
8609
|
+
defaultTtlSeconds: external_exports.number().int().positive().max(86400).optional(),
|
|
8610
|
+
staleAfterSeconds: external_exports.number().int().positive().max(604800).optional()
|
|
8611
|
+
}).superRefine((value, ctx) => {
|
|
8612
|
+
if (value.defaultTtlSeconds != null && value.staleAfterSeconds != null && value.staleAfterSeconds < value.defaultTtlSeconds) {
|
|
8613
|
+
ctx.addIssue({
|
|
8614
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8615
|
+
message: "staleAfterSeconds must be greater than or equal to defaultTtlSeconds",
|
|
8616
|
+
path: ["staleAfterSeconds"]
|
|
8617
|
+
});
|
|
8618
|
+
}
|
|
8619
|
+
});
|
|
8620
|
+
var pluginObjectReferenceProviderDeclarationSchema = external_exports.object({
|
|
8621
|
+
providerKey: externalObjectProviderKeySchema,
|
|
8622
|
+
displayName: external_exports.string().min(1).max(100),
|
|
8623
|
+
objectTypes: external_exports.array(externalObjectTypeSchema).min(1),
|
|
8624
|
+
urlPatterns: external_exports.array(external_exports.string().trim().min(1).max(500)).optional(),
|
|
8625
|
+
refreshPolicy: pluginObjectReferenceRefreshPolicySchema.optional(),
|
|
8626
|
+
webhookEndpointKeys: external_exports.array(external_exports.string().min(1)).optional()
|
|
8627
|
+
}).superRefine((value, ctx) => {
|
|
8628
|
+
const duplicateObjectTypes = value.objectTypes.filter((type, i) => value.objectTypes.indexOf(type) !== i);
|
|
8629
|
+
if (duplicateObjectTypes.length > 0) {
|
|
8630
|
+
ctx.addIssue({
|
|
8631
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8632
|
+
message: `Duplicate objectTypes: ${[...new Set(duplicateObjectTypes)].join(", ")}`,
|
|
8633
|
+
path: ["objectTypes"]
|
|
8634
|
+
});
|
|
8635
|
+
}
|
|
8636
|
+
const webhookKeys = value.webhookEndpointKeys ?? [];
|
|
8637
|
+
const duplicateWebhookKeys = webhookKeys.filter((key, i) => webhookKeys.indexOf(key) !== i);
|
|
8638
|
+
if (duplicateWebhookKeys.length > 0) {
|
|
8639
|
+
ctx.addIssue({
|
|
8640
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8641
|
+
message: `Duplicate webhookEndpointKeys: ${[...new Set(duplicateWebhookKeys)].join(", ")}`,
|
|
8642
|
+
path: ["webhookEndpointKeys"]
|
|
8643
|
+
});
|
|
8644
|
+
}
|
|
8645
|
+
});
|
|
7343
8646
|
var pluginManifestV1Schema = external_exports.object({
|
|
7344
8647
|
id: external_exports.string().min(1).regex(/^[a-z0-9][a-z0-9._-]*$/, "Plugin id must start with a lowercase alphanumeric and contain only lowercase letters, digits, dots, hyphens, or underscores"),
|
|
7345
8648
|
apiVersion: external_exports.literal(1),
|
|
@@ -7367,6 +8670,7 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7367
8670
|
routines: external_exports.array(pluginManagedRoutineDeclarationSchema).optional(),
|
|
7368
8671
|
skills: external_exports.array(pluginManagedSkillDeclarationSchema).optional(),
|
|
7369
8672
|
localFolders: external_exports.array(pluginLocalFolderDeclarationSchema).optional(),
|
|
8673
|
+
objectReferences: external_exports.array(pluginObjectReferenceProviderDeclarationSchema).optional(),
|
|
7370
8674
|
launchers: external_exports.array(pluginLauncherDeclarationSchema).optional(),
|
|
7371
8675
|
ui: external_exports.object({
|
|
7372
8676
|
slots: external_exports.array(pluginUiSlotDeclarationSchema).min(1).optional(),
|
|
@@ -7479,6 +8783,29 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7479
8783
|
});
|
|
7480
8784
|
}
|
|
7481
8785
|
}
|
|
8786
|
+
if (manifest2.objectReferences && manifest2.objectReferences.length > 0) {
|
|
8787
|
+
for (const capability of ["external.objects.detect", "external.objects.read"]) {
|
|
8788
|
+
if (!manifest2.capabilities.includes(capability)) {
|
|
8789
|
+
ctx.addIssue({
|
|
8790
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8791
|
+
message: `Capability '${capability}' is required when objectReferences are declared`,
|
|
8792
|
+
path: ["capabilities"]
|
|
8793
|
+
});
|
|
8794
|
+
}
|
|
8795
|
+
}
|
|
8796
|
+
const declaredWebhookKeys = new Set((manifest2.webhooks ?? []).map((webhook) => webhook.endpointKey));
|
|
8797
|
+
for (const [providerIndex, provider] of manifest2.objectReferences.entries()) {
|
|
8798
|
+
for (const endpointKey of provider.webhookEndpointKeys ?? []) {
|
|
8799
|
+
if (!declaredWebhookKeys.has(endpointKey)) {
|
|
8800
|
+
ctx.addIssue({
|
|
8801
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8802
|
+
message: `objectReferences webhookEndpointKey "${endpointKey}" must match a declared webhook endpoint`,
|
|
8803
|
+
path: ["objectReferences", providerIndex, "webhookEndpointKeys"]
|
|
8804
|
+
});
|
|
8805
|
+
}
|
|
8806
|
+
}
|
|
8807
|
+
}
|
|
8808
|
+
}
|
|
7482
8809
|
if (manifest2.database) {
|
|
7483
8810
|
const requiredCapabilities = [
|
|
7484
8811
|
"database.namespace.migrate",
|
|
@@ -7622,6 +8949,17 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7622
8949
|
});
|
|
7623
8950
|
}
|
|
7624
8951
|
}
|
|
8952
|
+
if (manifest2.objectReferences) {
|
|
8953
|
+
const providerKeys = manifest2.objectReferences.map((provider) => provider.providerKey);
|
|
8954
|
+
const duplicateProviders = providerKeys.filter((key, i) => providerKeys.indexOf(key) !== i);
|
|
8955
|
+
if (duplicateProviders.length > 0) {
|
|
8956
|
+
ctx.addIssue({
|
|
8957
|
+
code: external_exports.ZodIssueCode.custom,
|
|
8958
|
+
message: `Duplicate object reference provider keys: ${[...new Set(duplicateProviders)].join(", ")}`,
|
|
8959
|
+
path: ["objectReferences"]
|
|
8960
|
+
});
|
|
8961
|
+
}
|
|
8962
|
+
}
|
|
7625
8963
|
if (manifest2.ui) {
|
|
7626
8964
|
if (manifest2.ui.slots) {
|
|
7627
8965
|
const slotIds = manifest2.ui.slots.map((s) => s.id);
|
|
@@ -7690,19 +9028,35 @@ var listPluginStateSchema = external_exports.object({
|
|
|
7690
9028
|
namespace: external_exports.string().min(1).optional()
|
|
7691
9029
|
});
|
|
7692
9030
|
|
|
7693
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
9031
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/api.js
|
|
7694
9032
|
var API_PREFIX = "/api";
|
|
7695
9033
|
var API = {
|
|
7696
9034
|
health: `${API_PREFIX}/health`,
|
|
7697
9035
|
companies: `${API_PREFIX}/companies`,
|
|
7698
9036
|
agents: `${API_PREFIX}/agents`,
|
|
7699
9037
|
projects: `${API_PREFIX}/projects`,
|
|
9038
|
+
environments: `${API_PREFIX}/environments`,
|
|
9039
|
+
environmentCustomImageTemplate: `${API_PREFIX}/environments/:environmentId/custom-image-template`,
|
|
9040
|
+
environmentCustomImageTemplateDisable: `${API_PREFIX}/environments/:environmentId/custom-image-template`,
|
|
9041
|
+
environmentCustomImageTemplateRollback: `${API_PREFIX}/environments/:environmentId/custom-image-template/rollback`,
|
|
9042
|
+
environmentCustomImageSetupSessions: `${API_PREFIX}/environments/:environmentId/custom-image-setup-sessions`,
|
|
9043
|
+
environmentCustomImageSetupSession: `${API_PREFIX}/environment-custom-image-setup-sessions/:sessionId`,
|
|
9044
|
+
environmentCustomImageSetupSessionTerminalToken: `${API_PREFIX}/environment-custom-image-setup-sessions/:sessionId/terminal-session-token`,
|
|
9045
|
+
environmentCustomImageSetupSessionTerminalWs: `${API_PREFIX}/environment-custom-image-setup-sessions/:sessionId/terminal/ws`,
|
|
9046
|
+
environmentCustomImageSetupSessionFinish: `${API_PREFIX}/environment-custom-image-setup-sessions/:sessionId/finish`,
|
|
9047
|
+
environmentCustomImageSetupSessionCancel: `${API_PREFIX}/environment-custom-image-setup-sessions/:sessionId/cancel`,
|
|
7700
9048
|
issues: `${API_PREFIX}/issues`,
|
|
9049
|
+
issueWatchdog: `${API_PREFIX}/issues/:issueId/watchdog`,
|
|
7701
9050
|
issueTreeControl: `${API_PREFIX}/issues/:issueId/tree-control`,
|
|
7702
9051
|
issueTreeHolds: `${API_PREFIX}/issues/:issueId/tree-holds`,
|
|
7703
9052
|
goals: `${API_PREFIX}/goals`,
|
|
7704
9053
|
approvals: `${API_PREFIX}/approvals`,
|
|
7705
9054
|
secrets: `${API_PREFIX}/secrets`,
|
|
9055
|
+
userSecretDefinitions: `${API_PREFIX}/companies/:companyId/user-secret-definitions`,
|
|
9056
|
+
userSecretDefinition: `${API_PREFIX}/companies/:companyId/user-secret-definitions/:definitionId`,
|
|
9057
|
+
userSecretDefinitionCoverage: `${API_PREFIX}/companies/:companyId/user-secret-definitions/:definitionId/coverage`,
|
|
9058
|
+
myUserSecrets: `${API_PREFIX}/companies/:companyId/me/user-secrets`,
|
|
9059
|
+
myUserSecret: `${API_PREFIX}/companies/:companyId/me/user-secrets/:secretId`,
|
|
7706
9060
|
secretProviderConfigs: `${API_PREFIX}/secret-provider-configs`,
|
|
7707
9061
|
secretProviderConfigDiscoveryPreview: `${API_PREFIX}/companies/:companyId/secret-provider-configs/discovery/preview`,
|
|
7708
9062
|
costs: `${API_PREFIX}/costs`,
|
|
@@ -7717,19 +9071,7 @@ var API = {
|
|
|
7717
9071
|
admin: `${API_PREFIX}/admin`
|
|
7718
9072
|
};
|
|
7719
9073
|
|
|
7720
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
7721
|
-
var HUMAN_TIMESTAMP_FORMATTER = new Intl.DateTimeFormat("en-US", {
|
|
7722
|
-
year: "numeric",
|
|
7723
|
-
month: "long",
|
|
7724
|
-
day: "numeric",
|
|
7725
|
-
hour: "numeric",
|
|
7726
|
-
minute: "2-digit",
|
|
7727
|
-
hour12: true,
|
|
7728
|
-
timeZone: "UTC",
|
|
7729
|
-
timeZoneName: "short"
|
|
7730
|
-
});
|
|
7731
|
-
|
|
7732
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.529.0/node_modules/@paperclipai/shared/dist/config-schema.js
|
|
9074
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/config-schema.js
|
|
7733
9075
|
var configMetaSchema = external_exports.object({
|
|
7734
9076
|
version: external_exports.literal(1),
|
|
7735
9077
|
updatedAt: external_exports.string(),
|
|
@@ -7885,14 +9227,26 @@ var paperclipConfigSchema = external_exports.object({
|
|
|
7885
9227
|
}
|
|
7886
9228
|
});
|
|
7887
9229
|
|
|
7888
|
-
// node_modules/.pnpm/@paperclipai+
|
|
9230
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/adapter-registry.js
|
|
9231
|
+
var adapterRegistryEntrySchema = external_exports.object({
|
|
9232
|
+
adapterType: external_exports.string().min(1),
|
|
9233
|
+
enabled: external_exports.boolean().default(true),
|
|
9234
|
+
runtimeImage: external_exports.string().optional(),
|
|
9235
|
+
envKeys: external_exports.array(external_exports.string()).optional(),
|
|
9236
|
+
allowFqdns: external_exports.array(external_exports.string()).optional(),
|
|
9237
|
+
probeCommand: external_exports.array(external_exports.string()).optional(),
|
|
9238
|
+
defaultEnv: external_exports.record(external_exports.string()).optional()
|
|
9239
|
+
}).strict();
|
|
9240
|
+
var adapterRegistrySchema = external_exports.array(adapterRegistryEntrySchema);
|
|
9241
|
+
|
|
9242
|
+
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.707.0_react@19.2.4/node_modules/@paperclipai/plugin-sdk/dist/worker-rpc-host.js
|
|
7889
9243
|
import fs from "node:fs";
|
|
7890
9244
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7891
9245
|
import path from "node:path";
|
|
7892
9246
|
import { createInterface } from "node:readline";
|
|
7893
9247
|
import { fileURLToPath } from "node:url";
|
|
7894
9248
|
|
|
7895
|
-
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.
|
|
9249
|
+
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.707.0_react@19.2.4/node_modules/@paperclipai/plugin-sdk/dist/protocol.js
|
|
7896
9250
|
var JSONRPC_VERSION = "2.0";
|
|
7897
9251
|
var JSONRPC_ERROR_CODES = {
|
|
7898
9252
|
/** Invalid JSON was received by the server. */
|
|
@@ -8024,7 +9378,7 @@ var JsonRpcCallError = class extends Error {
|
|
|
8024
9378
|
}
|
|
8025
9379
|
};
|
|
8026
9380
|
|
|
8027
|
-
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.
|
|
9381
|
+
// node_modules/.pnpm/@paperclipai+plugin-sdk@2026.707.0_react@19.2.4/node_modules/@paperclipai/plugin-sdk/dist/worker-rpc-host.js
|
|
8028
9382
|
var DEFAULT_RPC_TIMEOUT_MS = 3e4;
|
|
8029
9383
|
function realpathOrResolvedPath(filePath) {
|
|
8030
9384
|
const resolvedPath = path.resolve(filePath);
|
|
@@ -8572,6 +9926,17 @@ function startWorkerRpcHost(options) {
|
|
|
8572
9926
|
authorAgentId: options2?.authorAgentId
|
|
8573
9927
|
});
|
|
8574
9928
|
},
|
|
9929
|
+
async requestCheckboxConfirmation(issueId, interaction, companyId, options2) {
|
|
9930
|
+
return callHost("issues.createInteraction", {
|
|
9931
|
+
issueId,
|
|
9932
|
+
companyId,
|
|
9933
|
+
interaction: {
|
|
9934
|
+
...interaction,
|
|
9935
|
+
kind: "request_checkbox_confirmation"
|
|
9936
|
+
},
|
|
9937
|
+
authorAgentId: options2?.authorAgentId
|
|
9938
|
+
});
|
|
9939
|
+
},
|
|
8575
9940
|
documents: {
|
|
8576
9941
|
async list(issueId, companyId) {
|
|
8577
9942
|
return callHost("issues.documents.list", { issueId, companyId });
|
|
@@ -8901,6 +10266,12 @@ function startWorkerRpcHost(options) {
|
|
|
8901
10266
|
return handlePerformAction(params);
|
|
8902
10267
|
case "executeTool":
|
|
8903
10268
|
return handleExecuteTool(params);
|
|
10269
|
+
case "detectExternalObjects":
|
|
10270
|
+
return handleDetectExternalObjects(params);
|
|
10271
|
+
case "resolveExternalObject":
|
|
10272
|
+
return handleResolveExternalObject(params);
|
|
10273
|
+
case "refreshExternalObjects":
|
|
10274
|
+
return handleRefreshExternalObjects(params);
|
|
8904
10275
|
case "environmentValidateConfig":
|
|
8905
10276
|
return handleEnvironmentValidateConfig(params);
|
|
8906
10277
|
case "environmentProbe":
|
|
@@ -8917,6 +10288,16 @@ function startWorkerRpcHost(options) {
|
|
|
8917
10288
|
return handleEnvironmentRealizeWorkspace(params);
|
|
8918
10289
|
case "environmentExecute":
|
|
8919
10290
|
return handleEnvironmentExecute(params);
|
|
10291
|
+
case "environmentStartInteractiveSetup":
|
|
10292
|
+
return handleEnvironmentStartInteractiveSetup(params);
|
|
10293
|
+
case "environmentGetInteractiveSetup":
|
|
10294
|
+
return handleEnvironmentGetInteractiveSetup(params);
|
|
10295
|
+
case "environmentCaptureTemplate":
|
|
10296
|
+
return handleEnvironmentCaptureTemplate(params);
|
|
10297
|
+
case "environmentCancelInteractiveSetup":
|
|
10298
|
+
return handleEnvironmentCancelInteractiveSetup(params);
|
|
10299
|
+
case "environmentDeleteTemplate":
|
|
10300
|
+
return handleEnvironmentDeleteTemplate(params);
|
|
8920
10301
|
default:
|
|
8921
10302
|
throw Object.assign(new Error(`Unknown method: ${method}`), { code: JSONRPC_ERROR_CODES.METHOD_NOT_FOUND });
|
|
8922
10303
|
}
|
|
@@ -8941,6 +10322,12 @@ function startWorkerRpcHost(options) {
|
|
|
8941
10322
|
supportedMethods.push("shutdown");
|
|
8942
10323
|
if (plugin2.definition.onApiRequest)
|
|
8943
10324
|
supportedMethods.push("handleApiRequest");
|
|
10325
|
+
if (plugin2.definition.onDetectExternalObjects)
|
|
10326
|
+
supportedMethods.push("detectExternalObjects");
|
|
10327
|
+
if (plugin2.definition.onResolveExternalObject)
|
|
10328
|
+
supportedMethods.push("resolveExternalObject");
|
|
10329
|
+
if (plugin2.definition.onRefreshExternalObjects)
|
|
10330
|
+
supportedMethods.push("refreshExternalObjects");
|
|
8944
10331
|
if (plugin2.definition.onEnvironmentValidateConfig)
|
|
8945
10332
|
supportedMethods.push("environmentValidateConfig");
|
|
8946
10333
|
if (plugin2.definition.onEnvironmentProbe)
|
|
@@ -8957,6 +10344,16 @@ function startWorkerRpcHost(options) {
|
|
|
8957
10344
|
supportedMethods.push("environmentRealizeWorkspace");
|
|
8958
10345
|
if (plugin2.definition.onEnvironmentExecute)
|
|
8959
10346
|
supportedMethods.push("environmentExecute");
|
|
10347
|
+
if (plugin2.definition.onEnvironmentStartInteractiveSetup)
|
|
10348
|
+
supportedMethods.push("environmentStartInteractiveSetup");
|
|
10349
|
+
if (plugin2.definition.onEnvironmentGetInteractiveSetup)
|
|
10350
|
+
supportedMethods.push("environmentGetInteractiveSetup");
|
|
10351
|
+
if (plugin2.definition.onEnvironmentCaptureTemplate)
|
|
10352
|
+
supportedMethods.push("environmentCaptureTemplate");
|
|
10353
|
+
if (plugin2.definition.onEnvironmentCancelInteractiveSetup)
|
|
10354
|
+
supportedMethods.push("environmentCancelInteractiveSetup");
|
|
10355
|
+
if (plugin2.definition.onEnvironmentDeleteTemplate)
|
|
10356
|
+
supportedMethods.push("environmentDeleteTemplate");
|
|
8960
10357
|
return { ok: true, supportedMethods };
|
|
8961
10358
|
}
|
|
8962
10359
|
async function handleHealth() {
|
|
@@ -9077,6 +10474,24 @@ function startWorkerRpcHost(options) {
|
|
|
9077
10474
|
}
|
|
9078
10475
|
return entry.fn(params.parameters, params.runContext);
|
|
9079
10476
|
}
|
|
10477
|
+
async function handleDetectExternalObjects(params) {
|
|
10478
|
+
if (!plugin2.definition.onDetectExternalObjects) {
|
|
10479
|
+
throw methodNotImplemented("detectExternalObjects");
|
|
10480
|
+
}
|
|
10481
|
+
return plugin2.definition.onDetectExternalObjects(params);
|
|
10482
|
+
}
|
|
10483
|
+
async function handleResolveExternalObject(params) {
|
|
10484
|
+
if (!plugin2.definition.onResolveExternalObject) {
|
|
10485
|
+
throw methodNotImplemented("resolveExternalObject");
|
|
10486
|
+
}
|
|
10487
|
+
return plugin2.definition.onResolveExternalObject(params);
|
|
10488
|
+
}
|
|
10489
|
+
async function handleRefreshExternalObjects(params) {
|
|
10490
|
+
if (!plugin2.definition.onRefreshExternalObjects) {
|
|
10491
|
+
throw methodNotImplemented("refreshExternalObjects");
|
|
10492
|
+
}
|
|
10493
|
+
return plugin2.definition.onRefreshExternalObjects(params);
|
|
10494
|
+
}
|
|
9080
10495
|
function methodNotImplemented(method) {
|
|
9081
10496
|
return Object.assign(new Error(`${method} is not implemented by this plugin`), { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED });
|
|
9082
10497
|
}
|
|
@@ -9128,6 +10543,36 @@ function startWorkerRpcHost(options) {
|
|
|
9128
10543
|
}
|
|
9129
10544
|
return plugin2.definition.onEnvironmentExecute(params);
|
|
9130
10545
|
}
|
|
10546
|
+
async function handleEnvironmentStartInteractiveSetup(params) {
|
|
10547
|
+
if (!plugin2.definition.onEnvironmentStartInteractiveSetup) {
|
|
10548
|
+
throw methodNotImplemented("environmentStartInteractiveSetup");
|
|
10549
|
+
}
|
|
10550
|
+
return plugin2.definition.onEnvironmentStartInteractiveSetup(params);
|
|
10551
|
+
}
|
|
10552
|
+
async function handleEnvironmentGetInteractiveSetup(params) {
|
|
10553
|
+
if (!plugin2.definition.onEnvironmentGetInteractiveSetup) {
|
|
10554
|
+
throw methodNotImplemented("environmentGetInteractiveSetup");
|
|
10555
|
+
}
|
|
10556
|
+
return plugin2.definition.onEnvironmentGetInteractiveSetup(params);
|
|
10557
|
+
}
|
|
10558
|
+
async function handleEnvironmentCaptureTemplate(params) {
|
|
10559
|
+
if (!plugin2.definition.onEnvironmentCaptureTemplate) {
|
|
10560
|
+
throw methodNotImplemented("environmentCaptureTemplate");
|
|
10561
|
+
}
|
|
10562
|
+
return plugin2.definition.onEnvironmentCaptureTemplate(params);
|
|
10563
|
+
}
|
|
10564
|
+
async function handleEnvironmentCancelInteractiveSetup(params) {
|
|
10565
|
+
if (!plugin2.definition.onEnvironmentCancelInteractiveSetup) {
|
|
10566
|
+
throw methodNotImplemented("environmentCancelInteractiveSetup");
|
|
10567
|
+
}
|
|
10568
|
+
return plugin2.definition.onEnvironmentCancelInteractiveSetup(params);
|
|
10569
|
+
}
|
|
10570
|
+
async function handleEnvironmentDeleteTemplate(params) {
|
|
10571
|
+
if (!plugin2.definition.onEnvironmentDeleteTemplate) {
|
|
10572
|
+
throw methodNotImplemented("environmentDeleteTemplate");
|
|
10573
|
+
}
|
|
10574
|
+
return plugin2.definition.onEnvironmentDeleteTemplate(params);
|
|
10575
|
+
}
|
|
9131
10576
|
function allowsEvent(filter, event) {
|
|
9132
10577
|
const payload = event.payload;
|
|
9133
10578
|
if (filter.companyId !== void 0) {
|
|
@@ -9270,11 +10715,12 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
|
9270
10715
|
var manifest = {
|
|
9271
10716
|
id: "starlein.paperclip-plugin-company-wizard",
|
|
9272
10717
|
apiVersion: 1,
|
|
9273
|
-
version: "0.4.
|
|
10718
|
+
version: "0.4.21",
|
|
9274
10719
|
displayName: "Company Wizard",
|
|
9275
10720
|
description: "AI-powered wizard to bootstrap agent companies from composable templates",
|
|
9276
10721
|
author: "Sascha Pietrowski <sp@speednetwork.de>",
|
|
9277
10722
|
categories: ["workspace", "ui"],
|
|
10723
|
+
minimumHostVersion: "2026.707.0",
|
|
9278
10724
|
capabilities: [
|
|
9279
10725
|
"companies.read",
|
|
9280
10726
|
"issues.create",
|
|
@@ -9284,6 +10730,7 @@ var manifest = {
|
|
|
9284
10730
|
"goals.read",
|
|
9285
10731
|
"agents.read",
|
|
9286
10732
|
"projects.read",
|
|
10733
|
+
"skills.managed",
|
|
9287
10734
|
"plugin.state.read",
|
|
9288
10735
|
"plugin.state.write",
|
|
9289
10736
|
"secrets.read-ref",
|
|
@@ -9363,12 +10810,12 @@ import { join } from "node:path";
|
|
|
9363
10810
|
|
|
9364
10811
|
// src/logic/ceo-defaults.js
|
|
9365
10812
|
var DEFAULT_CEO_ADAPTER_TYPE = "codex_local";
|
|
9366
|
-
var DEFAULT_CEO_MODEL = "gpt-5.
|
|
10813
|
+
var DEFAULT_CEO_MODEL = "gpt-5.6";
|
|
9367
10814
|
var DEFAULT_CEO_THINKING_LEVEL = "high";
|
|
9368
10815
|
var DEFAULT_WORKER_THINKING_LEVEL = "auto";
|
|
9369
10816
|
var DEFAULT_CEO_MAX_CONCURRENT_RUNS = 1;
|
|
9370
10817
|
var DEFAULT_CEO_HEARTBEAT_INTERVAL_SEC = 3600;
|
|
9371
|
-
var DEFAULT_CLAUDE_CEO_MODEL = "claude-opus-4-
|
|
10818
|
+
var DEFAULT_CLAUDE_CEO_MODEL = "claude-opus-4-8";
|
|
9372
10819
|
function asTrimmedString(value) {
|
|
9373
10820
|
return typeof value === "string" ? value.trim() : "";
|
|
9374
10821
|
}
|
|
@@ -9446,6 +10893,66 @@ function buildWorkerAgentRuntimeConfig() {
|
|
|
9446
10893
|
};
|
|
9447
10894
|
}
|
|
9448
10895
|
|
|
10896
|
+
// src/logic/resolve.js
|
|
10897
|
+
import { createHash } from "node:crypto";
|
|
10898
|
+
function skillSlug(baseName, variant) {
|
|
10899
|
+
return variant === "fallback" ? `${baseName}-fallback` : baseName;
|
|
10900
|
+
}
|
|
10901
|
+
function humanizeSkillName(baseName, variant) {
|
|
10902
|
+
const words = String(baseName).split(/[-_]/).filter(Boolean).map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
10903
|
+
return variant === "fallback" ? `${words} (fallback)` : words;
|
|
10904
|
+
}
|
|
10905
|
+
function hashSkillContent(markdown) {
|
|
10906
|
+
return createHash("sha256").update(String(markdown), "utf-8").digest("hex").slice(0, 16);
|
|
10907
|
+
}
|
|
10908
|
+
function buildCompanySkillSet(records) {
|
|
10909
|
+
const byBaseSlug = /* @__PURE__ */ new Map();
|
|
10910
|
+
for (const rec of records) {
|
|
10911
|
+
if (!byBaseSlug.has(rec.baseSlug)) byBaseSlug.set(rec.baseSlug, []);
|
|
10912
|
+
byBaseSlug.get(rec.baseSlug).push(rec);
|
|
10913
|
+
}
|
|
10914
|
+
const companySkills = [];
|
|
10915
|
+
const roleSkillSlugs = /* @__PURE__ */ new Map();
|
|
10916
|
+
const addRoleSlug = (roleName, slug) => {
|
|
10917
|
+
if (!roleSkillSlugs.has(roleName)) roleSkillSlugs.set(roleName, []);
|
|
10918
|
+
const list = roleSkillSlugs.get(roleName);
|
|
10919
|
+
if (!list.includes(slug)) list.push(slug);
|
|
10920
|
+
};
|
|
10921
|
+
for (const baseSlug of [...byBaseSlug.keys()].sort()) {
|
|
10922
|
+
const byHash = /* @__PURE__ */ new Map();
|
|
10923
|
+
for (const rec of byBaseSlug.get(baseSlug)) {
|
|
10924
|
+
const hash = hashSkillContent(rec.markdown);
|
|
10925
|
+
if (!byHash.has(hash)) byHash.set(hash, { hash, rec, roles: [] });
|
|
10926
|
+
byHash.get(hash).roles.push(rec.roleName);
|
|
10927
|
+
}
|
|
10928
|
+
const groups = [...byHash.values()].map((g) => ({ ...g, repRole: [...g.roles].sort()[0] })).sort((a, b) => a.repRole.localeCompare(b.repRole));
|
|
10929
|
+
groups.forEach((group, idx) => {
|
|
10930
|
+
const slug = idx === 0 ? baseSlug : `${baseSlug}-${group.repRole}`;
|
|
10931
|
+
companySkills.push({
|
|
10932
|
+
slug,
|
|
10933
|
+
name: group.rec.name,
|
|
10934
|
+
description: group.rec.description,
|
|
10935
|
+
categories: group.rec.categories,
|
|
10936
|
+
markdown: group.rec.markdown,
|
|
10937
|
+
contentHash: group.hash
|
|
10938
|
+
});
|
|
10939
|
+
for (const roleName of group.roles) addRoleSlug(roleName, slug);
|
|
10940
|
+
});
|
|
10941
|
+
}
|
|
10942
|
+
return { companySkills, roleSkillSlugs };
|
|
10943
|
+
}
|
|
10944
|
+
|
|
10945
|
+
// src/logic/routines.js
|
|
10946
|
+
function routineUsesProjectWorkspace(routine) {
|
|
10947
|
+
return routine?.useProjectWorkspace !== false;
|
|
10948
|
+
}
|
|
10949
|
+
function routineProjectPayload(routine, mainProjectId, { sync = false } = {}) {
|
|
10950
|
+
if (!routineUsesProjectWorkspace(routine)) {
|
|
10951
|
+
return sync ? { projectId: null } : {};
|
|
10952
|
+
}
|
|
10953
|
+
return mainProjectId ? { projectId: mainProjectId } : {};
|
|
10954
|
+
}
|
|
10955
|
+
|
|
9449
10956
|
// src/logic/assemble.js
|
|
9450
10957
|
async function exists(p) {
|
|
9451
10958
|
try {
|
|
@@ -9704,6 +11211,7 @@ ${stages.join("\n")}
|
|
|
9704
11211
|
});
|
|
9705
11212
|
}
|
|
9706
11213
|
initialIssues.unshift(...resolvedUserIssues);
|
|
11214
|
+
const skillRecords = [];
|
|
9707
11215
|
for (const moduleName of moduleNames) {
|
|
9708
11216
|
const moduleDir = join(templatesDir, "modules", moduleName);
|
|
9709
11217
|
if (!await exists(moduleDir)) {
|
|
@@ -9799,30 +11307,33 @@ ${stages.join("\n")}
|
|
|
9799
11307
|
async function installSkill(roleName, fileName, label) {
|
|
9800
11308
|
const resolved = await resolveSkillFile(roleName, fileName);
|
|
9801
11309
|
if (!resolved) return false;
|
|
9802
|
-
const
|
|
9803
|
-
|
|
9804
|
-
|
|
9805
|
-
await copyFile(resolved.path, destFile);
|
|
11310
|
+
const baseName = fileName.replace(/\.md$/, "").replace(/\.fallback$/, "");
|
|
11311
|
+
const variant = fileName.endsWith(".fallback.md") ? "fallback" : "primary";
|
|
11312
|
+
let markdown = await readFile(resolved.path, "utf-8");
|
|
9806
11313
|
let barApplied = false;
|
|
9807
11314
|
if (enableEnrichedPersonas && label === "primary") {
|
|
9808
|
-
const
|
|
9809
|
-
const bar = await resolveSkillFile(roleName, barFileName);
|
|
11315
|
+
const bar = await resolveSkillFile(roleName, fileName.replace(/\.md$/, ".bar.md"));
|
|
9810
11316
|
if (bar) {
|
|
9811
11317
|
const barContent = await readFile(bar.path, "utf-8");
|
|
9812
|
-
|
|
11318
|
+
markdown = `${markdown.trimEnd()}
|
|
11319
|
+
|
|
11320
|
+
${barContent.trim()}
|
|
11321
|
+
`;
|
|
9813
11322
|
barApplied = true;
|
|
9814
11323
|
}
|
|
9815
11324
|
}
|
|
9816
|
-
|
|
9817
|
-
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
|
|
9821
|
-
|
|
11325
|
+
skillRecords.push({
|
|
11326
|
+
roleName,
|
|
11327
|
+
baseSlug: skillSlug(baseName, variant),
|
|
11328
|
+
name: humanizeSkillName(baseName, variant),
|
|
11329
|
+
description: `${moduleName} \u2014 ${variant} skill`,
|
|
11330
|
+
categories: [moduleName],
|
|
11331
|
+
markdown
|
|
11332
|
+
});
|
|
9822
11333
|
const sourceTag = resolved.source === "shared" ? ", shared" : "";
|
|
9823
11334
|
const barTag = barApplied ? ", output bar" : "";
|
|
9824
11335
|
onProgress(
|
|
9825
|
-
`+
|
|
11336
|
+
`+ skill ${skillSlug(baseName, variant)} \u2192 ${roleName} (${moduleName}, ${label}${sourceTag}${barTag})`
|
|
9826
11337
|
);
|
|
9827
11338
|
return true;
|
|
9828
11339
|
}
|
|
@@ -9849,20 +11360,38 @@ Read and follow: \`skills/${fileName}\`
|
|
|
9849
11360
|
const skillName = skillFile.replace(/\.md$/, "");
|
|
9850
11361
|
const skillBaseName = skillName.replace(/\.fallback$/, "");
|
|
9851
11362
|
if (capabilityOwners.has(skillBaseName)) continue;
|
|
9852
|
-
const
|
|
9853
|
-
|
|
9854
|
-
await
|
|
9855
|
-
|
|
9856
|
-
|
|
9857
|
-
|
|
9858
|
-
|
|
9859
|
-
|
|
9860
|
-
|
|
9861
|
-
|
|
11363
|
+
const baseName = skillName.replace(/\.fallback$/, "");
|
|
11364
|
+
const variant = skillFile.endsWith(".fallback.md") ? "fallback" : "primary";
|
|
11365
|
+
const markdown = await readFile(join(skillsDir, skillFile), "utf-8");
|
|
11366
|
+
skillRecords.push({
|
|
11367
|
+
roleName: role.name,
|
|
11368
|
+
baseSlug: skillSlug(baseName, variant),
|
|
11369
|
+
name: humanizeSkillName(baseName, variant),
|
|
11370
|
+
description: `${moduleName} \u2014 ${variant} skill`,
|
|
11371
|
+
categories: [moduleName],
|
|
11372
|
+
markdown
|
|
11373
|
+
});
|
|
11374
|
+
onProgress(`+ skill ${skillSlug(baseName, variant)} \u2192 ${role.name} (${moduleName})`);
|
|
9862
11375
|
}
|
|
9863
11376
|
}
|
|
9864
11377
|
}
|
|
9865
11378
|
}
|
|
11379
|
+
const { companySkills, roleSkillSlugs } = buildCompanySkillSet(skillRecords);
|
|
11380
|
+
const slugToSkillName = new Map(companySkills.map((s) => [s.slug, s.name]));
|
|
11381
|
+
for (const [roleName, slugs] of roleSkillSlugs) {
|
|
11382
|
+
if (!slugs.length) continue;
|
|
11383
|
+
const lines = slugs.map((slug) => `- ${slugToSkillName.get(slug) ?? slug}`).join("\n");
|
|
11384
|
+
await appendToFile(
|
|
11385
|
+
join(companyDir, "agents", roleName, "AGENTS.md"),
|
|
11386
|
+
`
|
|
11387
|
+
## Installed skills
|
|
11388
|
+
|
|
11389
|
+
These skills are installed into your runtime and auto-discovered by your harness. Use them when relevant:
|
|
11390
|
+
|
|
11391
|
+
${lines}
|
|
11392
|
+
`
|
|
11393
|
+
);
|
|
11394
|
+
}
|
|
9866
11395
|
const HEARTBEAT_MARKER = "<!-- Module heartbeat sections are inserted above this line during assembly -->";
|
|
9867
11396
|
for (const moduleName of moduleNames) {
|
|
9868
11397
|
const moduleDir = join(templatesDir, "modules", moduleName);
|
|
@@ -10270,7 +11799,7 @@ Read: \`../../docs/${doc}\`
|
|
|
10270
11799
|
...executionWorkspacePolicy ? { executionWorkspacePolicy } : {}
|
|
10271
11800
|
};
|
|
10272
11801
|
})() : null;
|
|
10273
|
-
const mainProjectPreCreated = initialRoutines.
|
|
11802
|
+
const mainProjectPreCreated = initialRoutines.some(routineUsesProjectWorkspace) && mainProjectInfo !== null;
|
|
10274
11803
|
if (resolvedProjects.length > 0) {
|
|
10275
11804
|
bootstrap += `## Projects
|
|
10276
11805
|
|
|
@@ -10446,7 +11975,10 @@ Read: \`../../docs/${doc}\`
|
|
|
10446
11975
|
["schedule", routine.schedule],
|
|
10447
11976
|
["priority", routine.priority || "medium"],
|
|
10448
11977
|
["concurrencyPolicy", routine.concurrencyPolicy || "skip_if_active"],
|
|
10449
|
-
[
|
|
11978
|
+
[
|
|
11979
|
+
"projectId",
|
|
11980
|
+
routineUsesProjectWorkspace(routine) ? `\u2192 "${mainProjectName}"` : "none (control-plane routine; no project worktree)"
|
|
11981
|
+
]
|
|
10450
11982
|
]);
|
|
10451
11983
|
if (routine.description) {
|
|
10452
11984
|
bootstrap += `${escapeBody(routine.description)}
|
|
@@ -10503,6 +12035,20 @@ Read: \`../../docs/${doc}\`
|
|
|
10503
12035
|
}
|
|
10504
12036
|
bootstrap += `${stepN}. **Start CEO heartbeat** (one-time initial wakeup)
|
|
10505
12037
|
`;
|
|
12038
|
+
if (companySkills.length > 0) {
|
|
12039
|
+
bootstrap += `
|
|
12040
|
+
## Company Skills (pre-provisioned)
|
|
12041
|
+
|
|
12042
|
+
These skills are installed in the Skills Store and assigned to agents via \`desiredSkills\`. Do not recreate them:
|
|
12043
|
+
|
|
12044
|
+
`;
|
|
12045
|
+
for (const skill of companySkills) {
|
|
12046
|
+
bootstrap += `- \`${skill.slug}\` \u2014 ${skill.name}
|
|
12047
|
+
`;
|
|
12048
|
+
}
|
|
12049
|
+
bootstrap += `
|
|
12050
|
+
`;
|
|
12051
|
+
}
|
|
10506
12052
|
await writeFile(join(companyDir, "BOOTSTRAP.md"), bootstrap);
|
|
10507
12053
|
onProgress("+ BOOTSTRAP.md");
|
|
10508
12054
|
return {
|
|
@@ -10511,6 +12057,8 @@ Read: \`../../docs/${doc}\`
|
|
|
10511
12057
|
initialIssues,
|
|
10512
12058
|
initialRoutines,
|
|
10513
12059
|
roleAdapterOverrides,
|
|
12060
|
+
companySkills,
|
|
12061
|
+
roleSkillSlugs,
|
|
10514
12062
|
mainProject: mainProjectInfo
|
|
10515
12063
|
};
|
|
10516
12064
|
}
|
|
@@ -10683,6 +12231,27 @@ var PaperclipClient = class {
|
|
|
10683
12231
|
async getCompany(companyId) {
|
|
10684
12232
|
return this._fetch(`/api/companies/${companyId}`, { method: "GET" });
|
|
10685
12233
|
}
|
|
12234
|
+
async listCompanySkills(companyId) {
|
|
12235
|
+
return this._fetch(`/api/companies/${companyId}/skills`, { method: "GET" });
|
|
12236
|
+
}
|
|
12237
|
+
async createCompanySkill(companyId, { name, slug, description, markdown, categories }) {
|
|
12238
|
+
return this._fetch(`/api/companies/${companyId}/skills`, {
|
|
12239
|
+
method: "POST",
|
|
12240
|
+
body: JSON.stringify({
|
|
12241
|
+
name,
|
|
12242
|
+
...slug !== void 0 ? { slug } : {},
|
|
12243
|
+
...description !== void 0 ? { description } : {},
|
|
12244
|
+
...markdown !== void 0 ? { markdown } : {},
|
|
12245
|
+
...categories !== void 0 ? { categories } : {}
|
|
12246
|
+
})
|
|
12247
|
+
});
|
|
12248
|
+
}
|
|
12249
|
+
async updateCompanySkill(companyId, skillId, updates) {
|
|
12250
|
+
return this._fetch(`/api/companies/${companyId}/skills/${skillId}`, {
|
|
12251
|
+
method: "PATCH",
|
|
12252
|
+
body: JSON.stringify(updates || {})
|
|
12253
|
+
});
|
|
12254
|
+
}
|
|
10686
12255
|
async listAgents(companyId) {
|
|
10687
12256
|
return this._fetch(`/api/companies/${companyId}/agents`, { method: "GET" });
|
|
10688
12257
|
}
|
|
@@ -10826,14 +12395,14 @@ var PaperclipClient = class {
|
|
|
10826
12395
|
executionWorkspaceSettings,
|
|
10827
12396
|
executionPolicy,
|
|
10828
12397
|
blockedByIssueIds,
|
|
10829
|
-
|
|
12398
|
+
watchdog
|
|
10830
12399
|
}) {
|
|
10831
12400
|
return this._fetch(`/api/companies/${companyId}/issues`, {
|
|
10832
12401
|
method: "POST",
|
|
10833
12402
|
body: JSON.stringify({
|
|
10834
12403
|
title,
|
|
10835
12404
|
description: description || null,
|
|
10836
|
-
status: status ||
|
|
12405
|
+
status: status || "todo",
|
|
10837
12406
|
priority: priority || "medium",
|
|
10838
12407
|
parentId: parentId || void 0,
|
|
10839
12408
|
projectId: projectId || void 0,
|
|
@@ -10846,7 +12415,9 @@ var PaperclipClient = class {
|
|
|
10846
12415
|
executionWorkspaceSettings: executionWorkspaceSettings || void 0,
|
|
10847
12416
|
executionPolicy: executionPolicy || void 0,
|
|
10848
12417
|
blockedByIssueIds: blockedByIssueIds || void 0,
|
|
10849
|
-
|
|
12418
|
+
// Task watchdog (native stall recovery): { agentId, instructions? }.
|
|
12419
|
+
// The named agent is woken to recover the issue's subtree if it stalls.
|
|
12420
|
+
watchdog: watchdog && watchdog.agentId ? watchdog : void 0
|
|
10850
12421
|
})
|
|
10851
12422
|
});
|
|
10852
12423
|
}
|
|
@@ -10856,6 +12427,26 @@ var PaperclipClient = class {
|
|
|
10856
12427
|
body: JSON.stringify(updates || {})
|
|
10857
12428
|
});
|
|
10858
12429
|
}
|
|
12430
|
+
// Upsert a task watchdog on an existing issue. The watching agent must be
|
|
12431
|
+
// invokable (active), so callers should treat failures as non-fatal.
|
|
12432
|
+
async setIssueWatchdog(issueId, { agentId, instructions } = {}) {
|
|
12433
|
+
if (!agentId) {
|
|
12434
|
+
throw new Error("setIssueWatchdog requires agentId");
|
|
12435
|
+
}
|
|
12436
|
+
return this._fetch(`/api/issues/${issueId}/watchdog`, {
|
|
12437
|
+
method: "PUT",
|
|
12438
|
+
body: JSON.stringify({
|
|
12439
|
+
agentId,
|
|
12440
|
+
...instructions ? { instructions } : {}
|
|
12441
|
+
})
|
|
12442
|
+
});
|
|
12443
|
+
}
|
|
12444
|
+
async getIssueWatchdog(issueId) {
|
|
12445
|
+
return this._fetch(`/api/issues/${issueId}/watchdog`, { method: "GET" });
|
|
12446
|
+
}
|
|
12447
|
+
async deleteIssueWatchdog(issueId) {
|
|
12448
|
+
return this._fetch(`/api/issues/${issueId}/watchdog`, { method: "DELETE" });
|
|
12449
|
+
}
|
|
10859
12450
|
async putIssueDocument(issueId, key, { title, format, body, baseRevisionId }) {
|
|
10860
12451
|
return this._fetch(`/api/issues/${issueId}/documents/${encodeURIComponent(key)}`, {
|
|
10861
12452
|
method: "PUT",
|
|
@@ -11482,15 +13073,50 @@ async function setExternalInstructionsBundle({
|
|
|
11482
13073
|
);
|
|
11483
13074
|
}
|
|
11484
13075
|
}
|
|
11485
|
-
function
|
|
11486
|
-
const
|
|
11487
|
-
if (!
|
|
11488
|
-
|
|
13076
|
+
async function provisionCompanySkills(client, companyId, companySkills, log) {
|
|
13077
|
+
const slugToKey = /* @__PURE__ */ new Map();
|
|
13078
|
+
if (!Array.isArray(companySkills) || companySkills.length === 0) return slugToKey;
|
|
13079
|
+
let existing = [];
|
|
13080
|
+
try {
|
|
13081
|
+
const listed = await client.listCompanySkills(companyId);
|
|
13082
|
+
existing = Array.isArray(listed) ? listed : [];
|
|
13083
|
+
} catch (err) {
|
|
13084
|
+
log(
|
|
13085
|
+
`\u26A0 Could not list existing company skills: ${err instanceof Error ? err.message : String(err)}`
|
|
13086
|
+
);
|
|
11489
13087
|
}
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
}
|
|
13088
|
+
const bySlug = /* @__PURE__ */ new Map();
|
|
13089
|
+
for (const s of existing) {
|
|
13090
|
+
if (s && typeof s.slug === "string") bySlug.set(s.slug, s);
|
|
13091
|
+
}
|
|
13092
|
+
for (const skill of companySkills) {
|
|
13093
|
+
const found = bySlug.get(skill.slug);
|
|
13094
|
+
if (!found) {
|
|
13095
|
+
const created = await client.createCompanySkill(companyId, {
|
|
13096
|
+
name: skill.name,
|
|
13097
|
+
slug: skill.slug,
|
|
13098
|
+
description: skill.description,
|
|
13099
|
+
markdown: skill.markdown,
|
|
13100
|
+
categories: skill.categories
|
|
13101
|
+
});
|
|
13102
|
+
slugToKey.set(skill.slug, created?.key || created?.slug || skill.slug);
|
|
13103
|
+
log(`\u2713 Created company skill "${skill.slug}"`);
|
|
13104
|
+
continue;
|
|
13105
|
+
}
|
|
13106
|
+
slugToKey.set(skill.slug, found.key || skill.slug);
|
|
13107
|
+
const updates = {};
|
|
13108
|
+
if ((found.name ?? "") !== skill.name) updates.name = skill.name;
|
|
13109
|
+
if ((found.description ?? "") !== (skill.description ?? "")) {
|
|
13110
|
+
updates.description = skill.description ?? null;
|
|
13111
|
+
}
|
|
13112
|
+
if (Array.isArray(skill.categories)) updates.categories = skill.categories;
|
|
13113
|
+
if ((found.markdown ?? "") !== skill.markdown) updates.markdown = skill.markdown;
|
|
13114
|
+
if (Object.keys(updates).length > 0) {
|
|
13115
|
+
await client.updateCompanySkill(companyId, found.id, updates);
|
|
13116
|
+
log(`\u2713 Updated company skill "${skill.slug}"`);
|
|
13117
|
+
}
|
|
13118
|
+
}
|
|
13119
|
+
return slugToKey;
|
|
11494
13120
|
}
|
|
11495
13121
|
function routineTemplateTitle(routine) {
|
|
11496
13122
|
if (typeof routine?.title === "string" && routine.title.trim()) return routine.title.trim();
|
|
@@ -11596,6 +13222,7 @@ async function syncExistingCompanyRoutines({
|
|
|
11596
13222
|
title,
|
|
11597
13223
|
description: routine.description || null,
|
|
11598
13224
|
assigneeAgentId,
|
|
13225
|
+
...routineProjectPayload(routine, void 0, { sync: true }),
|
|
11599
13226
|
priority: routine.priority || "medium",
|
|
11600
13227
|
status: routine.status || "active",
|
|
11601
13228
|
concurrencyPolicy: routine.concurrencyPolicy || "skip_if_active",
|
|
@@ -12248,6 +13875,14 @@ var plugin = definePlugin({
|
|
|
12248
13875
|
let routines = [];
|
|
12249
13876
|
try {
|
|
12250
13877
|
allRoleNames = [...assembleResult.allRoles ?? []].filter(Boolean).sort();
|
|
13878
|
+
log("Provisioning company skills...");
|
|
13879
|
+
const slugToKey = await provisionCompanySkills(
|
|
13880
|
+
client,
|
|
13881
|
+
companyId,
|
|
13882
|
+
assembleResult.companySkills ?? [],
|
|
13883
|
+
log
|
|
13884
|
+
);
|
|
13885
|
+
const desiredSkillsForRole = (roleName) => (assembleResult.roleSkillSlugs?.get(roleName) ?? []).map((slug) => slugToKey.get(slug)).filter((key) => Boolean(key));
|
|
12251
13886
|
if (existingCompanyId) {
|
|
12252
13887
|
try {
|
|
12253
13888
|
const pluginId = await findPluginId(client);
|
|
@@ -12345,7 +13980,8 @@ var plugin = definePlugin({
|
|
|
12345
13980
|
try {
|
|
12346
13981
|
const ceoPatch = {
|
|
12347
13982
|
adapterType,
|
|
12348
|
-
adapterConfig
|
|
13983
|
+
adapterConfig,
|
|
13984
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12349
13985
|
runtimeConfig: ceoRuntimeConfig,
|
|
12350
13986
|
...ceoMetadata ? { metadata: { ...existingCeo.metadata ?? {}, ...ceoMetadata } } : {}
|
|
12351
13987
|
};
|
|
@@ -12376,6 +14012,7 @@ var plugin = definePlugin({
|
|
|
12376
14012
|
reportsTo: null,
|
|
12377
14013
|
adapterType,
|
|
12378
14014
|
adapterConfig,
|
|
14015
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12379
14016
|
runtimeConfig: ceoRuntimeConfig,
|
|
12380
14017
|
permissions: { canCreateAgents: true },
|
|
12381
14018
|
...boardOperationsIssue?.id ? { sourceIssueId: boardOperationsIssue.id } : {}
|
|
@@ -12395,6 +14032,7 @@ var plugin = definePlugin({
|
|
|
12395
14032
|
reportsTo: null,
|
|
12396
14033
|
adapterType,
|
|
12397
14034
|
adapterConfig,
|
|
14035
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12398
14036
|
runtimeConfig: ceoRuntimeConfig,
|
|
12399
14037
|
permissions: { canCreateAgents: true },
|
|
12400
14038
|
...boardOperationsIssue?.id ? { sourceIssueId: boardOperationsIssue.id } : {}
|
|
@@ -12461,7 +14099,8 @@ var plugin = definePlugin({
|
|
|
12461
14099
|
try {
|
|
12462
14100
|
await client.updateAgent(existingAgent.id, {
|
|
12463
14101
|
adapterType,
|
|
12464
|
-
adapterConfig:
|
|
14102
|
+
adapterConfig: roleAdapterConfig,
|
|
14103
|
+
desiredSkills: desiredSkillsForRole(roleName),
|
|
12465
14104
|
runtimeConfig: roleRuntimeConfig,
|
|
12466
14105
|
metadata: { ...existingAgent.metadata ?? {}, ...roleMetadata },
|
|
12467
14106
|
...!existingAgent.title && roleTitle ? { title: roleTitle } : {},
|
|
@@ -12493,6 +14132,7 @@ var plugin = definePlugin({
|
|
|
12493
14132
|
reportsTo: ceoAgentId,
|
|
12494
14133
|
adapterType,
|
|
12495
14134
|
adapterConfig: roleAdapterConfig,
|
|
14135
|
+
desiredSkills: desiredSkillsForRole(roleName),
|
|
12496
14136
|
runtimeConfig: roleRuntimeConfig,
|
|
12497
14137
|
...hiringPlanIssue?.id ? { sourceIssueId: hiringPlanIssue.id } : {}
|
|
12498
14138
|
});
|
|
@@ -12515,7 +14155,7 @@ var plugin = definePlugin({
|
|
|
12515
14155
|
if (!existingCompanyId) {
|
|
12516
14156
|
let mainProjectId;
|
|
12517
14157
|
const mainProject = assembleResult.mainProject;
|
|
12518
|
-
if (routines.
|
|
14158
|
+
if (routines.some(routineUsesProjectWorkspace) && mainProject?.name) {
|
|
12519
14159
|
try {
|
|
12520
14160
|
const createdProject = await client.createProject(companyId, {
|
|
12521
14161
|
name: mainProject.name,
|
|
@@ -12543,7 +14183,7 @@ var plugin = definePlugin({
|
|
|
12543
14183
|
title,
|
|
12544
14184
|
description: routine.description,
|
|
12545
14185
|
assigneeAgentId,
|
|
12546
|
-
|
|
14186
|
+
...routineProjectPayload(routine, mainProjectId),
|
|
12547
14187
|
priority: routine.priority || "medium",
|
|
12548
14188
|
concurrencyPolicy: routine.concurrencyPolicy || "skip_if_active",
|
|
12549
14189
|
catchUpPolicy: routine.catchUpPolicy || "skip_missed"
|
|
@@ -12587,6 +14227,17 @@ var plugin = definePlugin({
|
|
|
12587
14227
|
});
|
|
12588
14228
|
bootstrapIssue = issue;
|
|
12589
14229
|
log(`\u2713 Bootstrap task created: ${bootstrapIssue.identifier || bootstrapIssue.id}`);
|
|
14230
|
+
try {
|
|
14231
|
+
await client.setIssueWatchdog(bootstrapIssue.id, {
|
|
14232
|
+
agentId: ceoAgentId,
|
|
14233
|
+
instructions: "Bootstrap/setup stalled. Re-read this issue and BOOTSTRAP.md, then resume: create any missing goals/issues, link the pre-created projects and routines, and unblock or reassign whatever stopped. Do not archive or delete any execution workspace as part of recovery. Leave the issue in a clear final state."
|
|
14234
|
+
});
|
|
14235
|
+
log("\u2713 Watchdog attached to bootstrap task (CEO self-recovery).");
|
|
14236
|
+
} catch (wdErr) {
|
|
14237
|
+
log(
|
|
14238
|
+
`\u26A0 Could not attach bootstrap watchdog (non-fatal \u2014 likely CEO pending approval): ${wdErr instanceof Error ? wdErr.message : String(wdErr)}`
|
|
14239
|
+
);
|
|
14240
|
+
}
|
|
12590
14241
|
} catch (err) {
|
|
12591
14242
|
log(`\u2717 Provisioning failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
12592
14243
|
if (createdCompany) {
|