@starlein/paperclip-plugin-company-wizard 0.4.17 → 0.4.20
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 +91 -0
- package/README.md +11 -8
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +2 -2
- package/dist/ui/index.css +9 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +164 -9
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +2401 -635
- package/dist/worker.js.map +4 -4
- package/package.json +21 -21
- package/templates/bootstrap-instructions.md +0 -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/dependency-management/agents/security-engineer/skills/dependency-audit.fallback.md +18 -0
- package/templates/modules/game-design/agents/engineer/skills/game-design.fallback.md +17 -0
- 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/modules/triage/agents/engineer/skills/issue-triage.fallback.md +20 -0
- 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/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/HEARTBEAT.md +2 -2
- package/templates/roles/qa/HEARTBEAT.md +2 -1
- 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()
|
|
@@ -5752,6 +6486,97 @@ var requestConfirmationPayloadSchema = external_exports.object({
|
|
|
5752
6486
|
supersedeOnUserComment: external_exports.boolean().optional(),
|
|
5753
6487
|
target: requestConfirmationTargetSchema.nullable().optional()
|
|
5754
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()
|
|
6493
|
+
});
|
|
6494
|
+
var requestCheckboxConfirmationPayloadSchema = external_exports.object({
|
|
6495
|
+
version: external_exports.literal(1),
|
|
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(),
|
|
6502
|
+
acceptLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
6503
|
+
rejectLabel: external_exports.string().trim().min(1).max(80).nullable().optional(),
|
|
6504
|
+
rejectRequiresReason: external_exports.boolean().optional(),
|
|
6505
|
+
rejectReasonLabel: external_exports.string().trim().min(1).max(160).nullable().optional(),
|
|
6506
|
+
allowDeclineReason: external_exports.boolean().optional().default(true),
|
|
6507
|
+
declineReasonPlaceholder: external_exports.string().trim().min(1).max(240).nullable().optional(),
|
|
6508
|
+
supersedeOnUserComment: external_exports.boolean().optional(),
|
|
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
|
+
}
|
|
6579
|
+
});
|
|
5755
6580
|
var requestConfirmationResultSchema = external_exports.object({
|
|
5756
6581
|
version: external_exports.literal(1),
|
|
5757
6582
|
outcome: external_exports.enum(["accepted", "rejected", "superseded_by_comment", "stale_target"]),
|
|
@@ -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"),
|
|
@@ -5789,10 +6630,21 @@ var createIssueThreadInteractionSchema = external_exports.discriminatedUnion("ki
|
|
|
5789
6630
|
summary: external_exports.string().trim().max(1e3).nullable().optional(),
|
|
5790
6631
|
continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("none"),
|
|
5791
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
|
|
5792
6643
|
})
|
|
5793
6644
|
]);
|
|
5794
6645
|
var acceptIssueThreadInteractionSchema = external_exports.object({
|
|
5795
|
-
selectedClientKeys: external_exports.array(external_exports.string().trim().min(1).max(120)).min(1).max(50).optional()
|
|
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()
|
|
5796
6648
|
}).superRefine((value, ctx) => {
|
|
5797
6649
|
const seenClientKeys = /* @__PURE__ */ new Set();
|
|
5798
6650
|
for (const [index, clientKey] of (value.selectedClientKeys ?? []).entries()) {
|
|
@@ -5806,6 +6658,18 @@ var acceptIssueThreadInteractionSchema = external_exports.object({
|
|
|
5806
6658
|
}
|
|
5807
6659
|
seenClientKeys.add(clientKey);
|
|
5808
6660
|
}
|
|
6661
|
+
const seenOptionIds = /* @__PURE__ */ new Set();
|
|
6662
|
+
for (const [index, optionId] of (value.selectedOptionIds ?? []).entries()) {
|
|
6663
|
+
if (seenOptionIds.has(optionId)) {
|
|
6664
|
+
ctx.addIssue({
|
|
6665
|
+
code: external_exports.ZodIssueCode.custom,
|
|
6666
|
+
message: "selectedOptionIds must be unique",
|
|
6667
|
+
path: ["selectedOptionIds", index]
|
|
6668
|
+
});
|
|
6669
|
+
continue;
|
|
6670
|
+
}
|
|
6671
|
+
seenOptionIds.add(optionId);
|
|
6672
|
+
}
|
|
5809
6673
|
});
|
|
5810
6674
|
var rejectIssueThreadInteractionSchema = external_exports.object({
|
|
5811
6675
|
reason: external_exports.string().trim().max(4e3).optional()
|
|
@@ -5820,267 +6684,59 @@ var respondIssueThreadInteractionSchema = external_exports.object({
|
|
|
5820
6684
|
var linkIssueApprovalSchema = external_exports.object({
|
|
5821
6685
|
approvalId: external_exports.string().uuid()
|
|
5822
6686
|
});
|
|
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 })
|
|
5988
|
-
]);
|
|
5989
|
-
var createSecretProviderConfigSchema = external_exports.object({
|
|
5990
|
-
provider: external_exports.enum(SECRET_PROVIDERS),
|
|
5991
|
-
displayName: external_exports.string().trim().min(1).max(120),
|
|
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({})
|
|
5995
|
-
}).superRefine((value, ctx) => {
|
|
5996
|
-
rejectSensitiveProviderConfigKeys(value.config, ctx);
|
|
5997
|
-
const parsed = secretProviderConfigPayloadSchema.safeParse({
|
|
5998
|
-
provider: value.provider,
|
|
5999
|
-
config: value.config
|
|
6000
|
-
});
|
|
6001
|
-
if (!parsed.success) {
|
|
6002
|
-
for (const issue of parsed.error.issues) {
|
|
6003
|
-
ctx.addIssue({
|
|
6004
|
-
...issue,
|
|
6005
|
-
path: issue.path[0] === "config" ? issue.path : ["config", ...issue.path]
|
|
6006
|
-
});
|
|
6007
|
-
}
|
|
6008
|
-
}
|
|
6009
|
-
const status = value.status ?? (["gcp_secret_manager", "vault"].includes(value.provider) ? "coming_soon" : "ready");
|
|
6010
|
-
if ((value.provider === "gcp_secret_manager" || value.provider === "vault") && status !== "coming_soon" && status !== "disabled") {
|
|
6011
|
-
ctx.addIssue({
|
|
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) {
|
|
6063
|
-
ctx.addIssue({
|
|
6064
|
-
...issue,
|
|
6065
|
-
path: issue.path[0] === "config" ? issue.path : ["config", ...issue.path]
|
|
6066
|
-
});
|
|
6067
|
-
}
|
|
6068
|
-
}
|
|
6069
|
-
});
|
|
6070
|
-
var remoteSecretImportSelectionSchema = external_exports.object({
|
|
6071
|
-
externalRef: external_exports.string().trim().min(1).max(2048),
|
|
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()
|
|
6687
|
+
var createIssueAttachmentMetadataSchema = external_exports.object({
|
|
6688
|
+
issueCommentId: external_exports.string().uuid().optional().nullable()
|
|
6077
6689
|
});
|
|
6078
|
-
var
|
|
6079
|
-
|
|
6080
|
-
|
|
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(),
|
|
@@ -6827,44 +7921,176 @@ var createCostEventSchema = external_exports.object({
|
|
|
6827
7921
|
var updateBudgetSchema = external_exports.object({
|
|
6828
7922
|
budgetMonthlyCents: external_exports.number().int().nonnegative()
|
|
6829
7923
|
});
|
|
6830
|
-
|
|
6831
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
6832
|
-
var createFinanceEventSchema = external_exports.object({
|
|
6833
|
-
agentId: external_exports.string().uuid().optional().nullable(),
|
|
6834
|
-
issueId: external_exports.string().uuid().optional().nullable(),
|
|
6835
|
-
projectId: external_exports.string().uuid().optional().nullable(),
|
|
6836
|
-
goalId: external_exports.string().uuid().optional().nullable(),
|
|
6837
|
-
heartbeatRunId: external_exports.string().uuid().optional().nullable(),
|
|
6838
|
-
costEventId: external_exports.string().uuid().optional().nullable(),
|
|
6839
|
-
billingCode: external_exports.string().optional().nullable(),
|
|
6840
|
-
description: external_exports.string().max(500).optional().nullable(),
|
|
6841
|
-
eventKind: external_exports.enum(FINANCE_EVENT_KINDS),
|
|
6842
|
-
direction: external_exports.enum(FINANCE_DIRECTIONS).optional().default("debit"),
|
|
6843
|
-
biller: external_exports.string().min(1),
|
|
6844
|
-
provider: external_exports.string().min(1).optional().nullable(),
|
|
6845
|
-
executionAdapterType: external_exports.enum(AGENT_ADAPTER_TYPES).optional().nullable(),
|
|
6846
|
-
pricingTier: external_exports.string().min(1).optional().nullable(),
|
|
6847
|
-
region: external_exports.string().min(1).optional().nullable(),
|
|
6848
|
-
model: external_exports.string().min(1).optional().nullable(),
|
|
6849
|
-
quantity: external_exports.number().int().nonnegative().optional().nullable(),
|
|
6850
|
-
unit: external_exports.enum(FINANCE_UNITS).optional().nullable(),
|
|
6851
|
-
amountCents: external_exports.number().int().nonnegative(),
|
|
6852
|
-
currency: external_exports.string().length(3).optional().default("USD"),
|
|
6853
|
-
estimated: external_exports.boolean().optional().default(false),
|
|
6854
|
-
externalInvoiceId: external_exports.string().optional().nullable(),
|
|
6855
|
-
metadataJson: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
6856
|
-
occurredAt: external_exports.string().datetime()
|
|
6857
|
-
}).transform((value) => ({
|
|
6858
|
-
...value,
|
|
6859
|
-
currency: value.currency.toUpperCase()
|
|
6860
|
-
}));
|
|
6861
|
-
|
|
6862
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
6863
|
-
var createAssetImageMetadataSchema = external_exports.object({
|
|
6864
|
-
namespace: external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9/_-]+$/).optional()
|
|
7924
|
+
|
|
7925
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/finance.js
|
|
7926
|
+
var createFinanceEventSchema = external_exports.object({
|
|
7927
|
+
agentId: external_exports.string().uuid().optional().nullable(),
|
|
7928
|
+
issueId: external_exports.string().uuid().optional().nullable(),
|
|
7929
|
+
projectId: external_exports.string().uuid().optional().nullable(),
|
|
7930
|
+
goalId: external_exports.string().uuid().optional().nullable(),
|
|
7931
|
+
heartbeatRunId: external_exports.string().uuid().optional().nullable(),
|
|
7932
|
+
costEventId: external_exports.string().uuid().optional().nullable(),
|
|
7933
|
+
billingCode: external_exports.string().optional().nullable(),
|
|
7934
|
+
description: external_exports.string().max(500).optional().nullable(),
|
|
7935
|
+
eventKind: external_exports.enum(FINANCE_EVENT_KINDS),
|
|
7936
|
+
direction: external_exports.enum(FINANCE_DIRECTIONS).optional().default("debit"),
|
|
7937
|
+
biller: external_exports.string().min(1),
|
|
7938
|
+
provider: external_exports.string().min(1).optional().nullable(),
|
|
7939
|
+
executionAdapterType: external_exports.enum(AGENT_ADAPTER_TYPES).optional().nullable(),
|
|
7940
|
+
pricingTier: external_exports.string().min(1).optional().nullable(),
|
|
7941
|
+
region: external_exports.string().min(1).optional().nullable(),
|
|
7942
|
+
model: external_exports.string().min(1).optional().nullable(),
|
|
7943
|
+
quantity: external_exports.number().int().nonnegative().optional().nullable(),
|
|
7944
|
+
unit: external_exports.enum(FINANCE_UNITS).optional().nullable(),
|
|
7945
|
+
amountCents: external_exports.number().int().nonnegative(),
|
|
7946
|
+
currency: external_exports.string().length(3).optional().default("USD"),
|
|
7947
|
+
estimated: external_exports.boolean().optional().default(false),
|
|
7948
|
+
externalInvoiceId: external_exports.string().optional().nullable(),
|
|
7949
|
+
metadataJson: external_exports.record(external_exports.string(), external_exports.unknown()).optional().nullable(),
|
|
7950
|
+
occurredAt: external_exports.string().datetime()
|
|
7951
|
+
}).transform((value) => ({
|
|
7952
|
+
...value,
|
|
7953
|
+
currency: value.currency.toUpperCase()
|
|
7954
|
+
}));
|
|
7955
|
+
|
|
7956
|
+
// node_modules/.pnpm/@paperclipai+shared@2026.707.0/node_modules/@paperclipai/shared/dist/validators/asset.js
|
|
7957
|
+
var createAssetImageMetadataSchema = external_exports.object({
|
|
7958
|
+
namespace: external_exports.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9/_-]+$/).optional()
|
|
7959
|
+
});
|
|
7960
|
+
|
|
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
|
+
})
|
|
6865
8091
|
});
|
|
6866
8092
|
|
|
6867
|
-
// node_modules/.pnpm/@paperclipai+shared@2026.
|
|
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,30 +8670,31 @@ 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(),
|
|
7373
8677
|
launchers: external_exports.array(pluginLauncherDeclarationSchema).optional()
|
|
7374
8678
|
}).optional()
|
|
7375
|
-
}).superRefine((
|
|
7376
|
-
const hasUiSlots = (
|
|
7377
|
-
const hasUiLaunchers = (
|
|
7378
|
-
if ((hasUiSlots || hasUiLaunchers) && !
|
|
8679
|
+
}).superRefine((manifest2, ctx) => {
|
|
8680
|
+
const hasUiSlots = (manifest2.ui?.slots?.length ?? 0) > 0;
|
|
8681
|
+
const hasUiLaunchers = (manifest2.ui?.launchers?.length ?? 0) > 0;
|
|
8682
|
+
if ((hasUiSlots || hasUiLaunchers) && !manifest2.entrypoints.ui) {
|
|
7379
8683
|
ctx.addIssue({
|
|
7380
8684
|
code: external_exports.ZodIssueCode.custom,
|
|
7381
8685
|
message: "entrypoints.ui is required when ui.slots or ui.launchers are declared",
|
|
7382
8686
|
path: ["entrypoints", "ui"]
|
|
7383
8687
|
});
|
|
7384
8688
|
}
|
|
7385
|
-
if (
|
|
8689
|
+
if (manifest2.minimumHostVersion && manifest2.minimumPaperclipVersion && manifest2.minimumHostVersion !== manifest2.minimumPaperclipVersion) {
|
|
7386
8690
|
ctx.addIssue({
|
|
7387
8691
|
code: external_exports.ZodIssueCode.custom,
|
|
7388
8692
|
message: "minimumHostVersion and minimumPaperclipVersion must match when both are declared",
|
|
7389
8693
|
path: ["minimumHostVersion"]
|
|
7390
8694
|
});
|
|
7391
8695
|
}
|
|
7392
|
-
if (
|
|
7393
|
-
if (!
|
|
8696
|
+
if (manifest2.tools && manifest2.tools.length > 0) {
|
|
8697
|
+
if (!manifest2.capabilities.includes("agent.tools.register")) {
|
|
7394
8698
|
ctx.addIssue({
|
|
7395
8699
|
code: external_exports.ZodIssueCode.custom,
|
|
7396
8700
|
message: "Capability 'agent.tools.register' is required when tools are declared",
|
|
@@ -7398,8 +8702,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7398
8702
|
});
|
|
7399
8703
|
}
|
|
7400
8704
|
}
|
|
7401
|
-
if (
|
|
7402
|
-
if (!
|
|
8705
|
+
if (manifest2.environmentDrivers && manifest2.environmentDrivers.length > 0) {
|
|
8706
|
+
if (!manifest2.capabilities.includes("environment.drivers.register")) {
|
|
7403
8707
|
ctx.addIssue({
|
|
7404
8708
|
code: external_exports.ZodIssueCode.custom,
|
|
7405
8709
|
message: "Capability 'environment.drivers.register' is required when environmentDrivers are declared",
|
|
@@ -7407,8 +8711,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7407
8711
|
});
|
|
7408
8712
|
}
|
|
7409
8713
|
}
|
|
7410
|
-
if (
|
|
7411
|
-
if (!
|
|
8714
|
+
if (manifest2.agents && manifest2.agents.length > 0) {
|
|
8715
|
+
if (!manifest2.capabilities.includes("agents.managed")) {
|
|
7412
8716
|
ctx.addIssue({
|
|
7413
8717
|
code: external_exports.ZodIssueCode.custom,
|
|
7414
8718
|
message: "Capability 'agents.managed' is required when managed agents are declared",
|
|
@@ -7416,8 +8720,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7416
8720
|
});
|
|
7417
8721
|
}
|
|
7418
8722
|
}
|
|
7419
|
-
if (
|
|
7420
|
-
if (!
|
|
8723
|
+
if (manifest2.projects && manifest2.projects.length > 0) {
|
|
8724
|
+
if (!manifest2.capabilities.includes("projects.managed")) {
|
|
7421
8725
|
ctx.addIssue({
|
|
7422
8726
|
code: external_exports.ZodIssueCode.custom,
|
|
7423
8727
|
message: "Capability 'projects.managed' is required when managed projects are declared",
|
|
@@ -7425,8 +8729,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7425
8729
|
});
|
|
7426
8730
|
}
|
|
7427
8731
|
}
|
|
7428
|
-
if (
|
|
7429
|
-
if (!
|
|
8732
|
+
if (manifest2.routines && manifest2.routines.length > 0) {
|
|
8733
|
+
if (!manifest2.capabilities.includes("routines.managed")) {
|
|
7430
8734
|
ctx.addIssue({
|
|
7431
8735
|
code: external_exports.ZodIssueCode.custom,
|
|
7432
8736
|
message: "Capability 'routines.managed' is required when managed routines are declared",
|
|
@@ -7434,8 +8738,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7434
8738
|
});
|
|
7435
8739
|
}
|
|
7436
8740
|
}
|
|
7437
|
-
if (
|
|
7438
|
-
if (!
|
|
8741
|
+
if (manifest2.skills && manifest2.skills.length > 0) {
|
|
8742
|
+
if (!manifest2.capabilities.includes("skills.managed")) {
|
|
7439
8743
|
ctx.addIssue({
|
|
7440
8744
|
code: external_exports.ZodIssueCode.custom,
|
|
7441
8745
|
message: "Capability 'skills.managed' is required when managed skills are declared",
|
|
@@ -7443,8 +8747,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7443
8747
|
});
|
|
7444
8748
|
}
|
|
7445
8749
|
}
|
|
7446
|
-
if (
|
|
7447
|
-
if (!
|
|
8750
|
+
if (manifest2.localFolders && manifest2.localFolders.length > 0) {
|
|
8751
|
+
if (!manifest2.capabilities.includes("local.folders")) {
|
|
7448
8752
|
ctx.addIssue({
|
|
7449
8753
|
code: external_exports.ZodIssueCode.custom,
|
|
7450
8754
|
message: "Capability 'local.folders' is required when local folders are declared",
|
|
@@ -7452,8 +8756,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7452
8756
|
});
|
|
7453
8757
|
}
|
|
7454
8758
|
}
|
|
7455
|
-
if (
|
|
7456
|
-
if (!
|
|
8759
|
+
if (manifest2.jobs && manifest2.jobs.length > 0) {
|
|
8760
|
+
if (!manifest2.capabilities.includes("jobs.schedule")) {
|
|
7457
8761
|
ctx.addIssue({
|
|
7458
8762
|
code: external_exports.ZodIssueCode.custom,
|
|
7459
8763
|
message: "Capability 'jobs.schedule' is required when jobs are declared",
|
|
@@ -7461,8 +8765,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7461
8765
|
});
|
|
7462
8766
|
}
|
|
7463
8767
|
}
|
|
7464
|
-
if (
|
|
7465
|
-
if (!
|
|
8768
|
+
if (manifest2.webhooks && manifest2.webhooks.length > 0) {
|
|
8769
|
+
if (!manifest2.capabilities.includes("webhooks.receive")) {
|
|
7466
8770
|
ctx.addIssue({
|
|
7467
8771
|
code: external_exports.ZodIssueCode.custom,
|
|
7468
8772
|
message: "Capability 'webhooks.receive' is required when webhooks are declared",
|
|
@@ -7470,8 +8774,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7470
8774
|
});
|
|
7471
8775
|
}
|
|
7472
8776
|
}
|
|
7473
|
-
if (
|
|
7474
|
-
if (!
|
|
8777
|
+
if (manifest2.apiRoutes && manifest2.apiRoutes.length > 0) {
|
|
8778
|
+
if (!manifest2.capabilities.includes("api.routes.register")) {
|
|
7475
8779
|
ctx.addIssue({
|
|
7476
8780
|
code: external_exports.ZodIssueCode.custom,
|
|
7477
8781
|
message: "Capability 'api.routes.register' is required when apiRoutes are declared",
|
|
@@ -7479,13 +8783,36 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7479
8783
|
});
|
|
7480
8784
|
}
|
|
7481
8785
|
}
|
|
7482
|
-
if (
|
|
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
|
+
}
|
|
8809
|
+
if (manifest2.database) {
|
|
7483
8810
|
const requiredCapabilities = [
|
|
7484
8811
|
"database.namespace.migrate",
|
|
7485
8812
|
"database.namespace.read"
|
|
7486
8813
|
];
|
|
7487
8814
|
for (const capability of requiredCapabilities) {
|
|
7488
|
-
if (!
|
|
8815
|
+
if (!manifest2.capabilities.includes(capability)) {
|
|
7489
8816
|
ctx.addIssue({
|
|
7490
8817
|
code: external_exports.ZodIssueCode.custom,
|
|
7491
8818
|
message: `Capability '${capability}' is required when database migrations are declared`,
|
|
@@ -7493,7 +8820,7 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7493
8820
|
});
|
|
7494
8821
|
}
|
|
7495
8822
|
}
|
|
7496
|
-
const coreReadTables =
|
|
8823
|
+
const coreReadTables = manifest2.database.coreReadTables ?? [];
|
|
7497
8824
|
const duplicates = coreReadTables.filter((table, i) => coreReadTables.indexOf(table) !== i);
|
|
7498
8825
|
if (duplicates.length > 0) {
|
|
7499
8826
|
ctx.addIssue({
|
|
@@ -7503,8 +8830,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7503
8830
|
});
|
|
7504
8831
|
}
|
|
7505
8832
|
}
|
|
7506
|
-
if (
|
|
7507
|
-
const jobKeys =
|
|
8833
|
+
if (manifest2.jobs) {
|
|
8834
|
+
const jobKeys = manifest2.jobs.map((j) => j.jobKey);
|
|
7508
8835
|
const duplicates = jobKeys.filter((key, i) => jobKeys.indexOf(key) !== i);
|
|
7509
8836
|
if (duplicates.length > 0) {
|
|
7510
8837
|
ctx.addIssue({
|
|
@@ -7514,8 +8841,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7514
8841
|
});
|
|
7515
8842
|
}
|
|
7516
8843
|
}
|
|
7517
|
-
if (
|
|
7518
|
-
const endpointKeys =
|
|
8844
|
+
if (manifest2.webhooks) {
|
|
8845
|
+
const endpointKeys = manifest2.webhooks.map((w) => w.endpointKey);
|
|
7519
8846
|
const duplicates = endpointKeys.filter((key, i) => endpointKeys.indexOf(key) !== i);
|
|
7520
8847
|
if (duplicates.length > 0) {
|
|
7521
8848
|
ctx.addIssue({
|
|
@@ -7525,8 +8852,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7525
8852
|
});
|
|
7526
8853
|
}
|
|
7527
8854
|
}
|
|
7528
|
-
if (
|
|
7529
|
-
const routeKeys =
|
|
8855
|
+
if (manifest2.apiRoutes) {
|
|
8856
|
+
const routeKeys = manifest2.apiRoutes.map((route) => route.routeKey);
|
|
7530
8857
|
const duplicateKeys = routeKeys.filter((key, i) => routeKeys.indexOf(key) !== i);
|
|
7531
8858
|
if (duplicateKeys.length > 0) {
|
|
7532
8859
|
ctx.addIssue({
|
|
@@ -7535,7 +8862,7 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7535
8862
|
path: ["apiRoutes"]
|
|
7536
8863
|
});
|
|
7537
8864
|
}
|
|
7538
|
-
const routeSignatures =
|
|
8865
|
+
const routeSignatures = manifest2.apiRoutes.map((route) => `${route.method} ${route.path}`);
|
|
7539
8866
|
const duplicateRoutes = routeSignatures.filter((sig, i) => routeSignatures.indexOf(sig) !== i);
|
|
7540
8867
|
if (duplicateRoutes.length > 0) {
|
|
7541
8868
|
ctx.addIssue({
|
|
@@ -7545,8 +8872,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7545
8872
|
});
|
|
7546
8873
|
}
|
|
7547
8874
|
}
|
|
7548
|
-
if (
|
|
7549
|
-
const toolNames =
|
|
8875
|
+
if (manifest2.tools) {
|
|
8876
|
+
const toolNames = manifest2.tools.map((t) => t.name);
|
|
7550
8877
|
const duplicates = toolNames.filter((name, i) => toolNames.indexOf(name) !== i);
|
|
7551
8878
|
if (duplicates.length > 0) {
|
|
7552
8879
|
ctx.addIssue({
|
|
@@ -7556,8 +8883,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7556
8883
|
});
|
|
7557
8884
|
}
|
|
7558
8885
|
}
|
|
7559
|
-
if (
|
|
7560
|
-
const driverKeys =
|
|
8886
|
+
if (manifest2.environmentDrivers) {
|
|
8887
|
+
const driverKeys = manifest2.environmentDrivers.map((d) => d.driverKey);
|
|
7561
8888
|
const duplicates = driverKeys.filter((key, i) => driverKeys.indexOf(key) !== i);
|
|
7562
8889
|
if (duplicates.length > 0) {
|
|
7563
8890
|
ctx.addIssue({
|
|
@@ -7567,8 +8894,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7567
8894
|
});
|
|
7568
8895
|
}
|
|
7569
8896
|
}
|
|
7570
|
-
if (
|
|
7571
|
-
const folderKeys =
|
|
8897
|
+
if (manifest2.localFolders) {
|
|
8898
|
+
const folderKeys = manifest2.localFolders.map((folder) => folder.folderKey);
|
|
7572
8899
|
const duplicates = folderKeys.filter((key, i) => folderKeys.indexOf(key) !== i);
|
|
7573
8900
|
if (duplicates.length > 0) {
|
|
7574
8901
|
ctx.addIssue({
|
|
@@ -7578,8 +8905,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7578
8905
|
});
|
|
7579
8906
|
}
|
|
7580
8907
|
}
|
|
7581
|
-
if (
|
|
7582
|
-
const agentKeys =
|
|
8908
|
+
if (manifest2.agents) {
|
|
8909
|
+
const agentKeys = manifest2.agents.map((agent) => agent.agentKey);
|
|
7583
8910
|
const duplicates = agentKeys.filter((key, i) => agentKeys.indexOf(key) !== i);
|
|
7584
8911
|
if (duplicates.length > 0) {
|
|
7585
8912
|
ctx.addIssue({
|
|
@@ -7589,8 +8916,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7589
8916
|
});
|
|
7590
8917
|
}
|
|
7591
8918
|
}
|
|
7592
|
-
if (
|
|
7593
|
-
const projectKeys =
|
|
8919
|
+
if (manifest2.projects) {
|
|
8920
|
+
const projectKeys = manifest2.projects.map((project) => project.projectKey);
|
|
7594
8921
|
const duplicates = projectKeys.filter((key, i) => projectKeys.indexOf(key) !== i);
|
|
7595
8922
|
if (duplicates.length > 0) {
|
|
7596
8923
|
ctx.addIssue({
|
|
@@ -7600,8 +8927,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7600
8927
|
});
|
|
7601
8928
|
}
|
|
7602
8929
|
}
|
|
7603
|
-
if (
|
|
7604
|
-
const routineKeys =
|
|
8930
|
+
if (manifest2.routines) {
|
|
8931
|
+
const routineKeys = manifest2.routines.map((routine) => routine.routineKey);
|
|
7605
8932
|
const duplicates = routineKeys.filter((key, i) => routineKeys.indexOf(key) !== i);
|
|
7606
8933
|
if (duplicates.length > 0) {
|
|
7607
8934
|
ctx.addIssue({
|
|
@@ -7611,8 +8938,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7611
8938
|
});
|
|
7612
8939
|
}
|
|
7613
8940
|
}
|
|
7614
|
-
if (
|
|
7615
|
-
const skillKeys =
|
|
8941
|
+
if (manifest2.skills) {
|
|
8942
|
+
const skillKeys = manifest2.skills.map((skill) => skill.skillKey);
|
|
7616
8943
|
const duplicates = skillKeys.filter((key, i) => skillKeys.indexOf(key) !== i);
|
|
7617
8944
|
if (duplicates.length > 0) {
|
|
7618
8945
|
ctx.addIssue({
|
|
@@ -7622,9 +8949,20 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7622
8949
|
});
|
|
7623
8950
|
}
|
|
7624
8951
|
}
|
|
7625
|
-
if (
|
|
7626
|
-
|
|
7627
|
-
|
|
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
|
+
}
|
|
8963
|
+
if (manifest2.ui) {
|
|
8964
|
+
if (manifest2.ui.slots) {
|
|
8965
|
+
const slotIds = manifest2.ui.slots.map((s) => s.id);
|
|
7628
8966
|
const duplicates = slotIds.filter((id, i) => slotIds.indexOf(id) !== i);
|
|
7629
8967
|
if (duplicates.length > 0) {
|
|
7630
8968
|
ctx.addIssue({
|
|
@@ -7636,8 +8974,8 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7636
8974
|
}
|
|
7637
8975
|
}
|
|
7638
8976
|
const allLaunchers = [
|
|
7639
|
-
...
|
|
7640
|
-
...
|
|
8977
|
+
...manifest2.launchers ?? [],
|
|
8978
|
+
...manifest2.ui?.launchers ?? []
|
|
7641
8979
|
];
|
|
7642
8980
|
if (allLaunchers.length > 0) {
|
|
7643
8981
|
const launcherIds = allLaunchers.map((launcher) => launcher.id);
|
|
@@ -7646,7 +8984,7 @@ var pluginManifestV1Schema = external_exports.object({
|
|
|
7646
8984
|
ctx.addIssue({
|
|
7647
8985
|
code: external_exports.ZodIssueCode.custom,
|
|
7648
8986
|
message: `Duplicate launcher ids: ${[...new Set(duplicates)].join(", ")}`,
|
|
7649
|
-
path:
|
|
8987
|
+
path: manifest2.ui?.launchers ? ["ui", "launchers"] : ["launchers"]
|
|
7650
8988
|
});
|
|
7651
8989
|
}
|
|
7652
8990
|
}
|
|
@@ -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);
|
|
@@ -8061,7 +9415,7 @@ function startWorkerRpcHost(options) {
|
|
|
8061
9415
|
const rpcTimeoutMs = options.rpcTimeoutMs ?? DEFAULT_RPC_TIMEOUT_MS;
|
|
8062
9416
|
let running = true;
|
|
8063
9417
|
let initialized = false;
|
|
8064
|
-
let
|
|
9418
|
+
let manifest2 = null;
|
|
8065
9419
|
let currentConfig = {};
|
|
8066
9420
|
let databaseNamespace = null;
|
|
8067
9421
|
const invocationContextStorage = new AsyncLocalStorage();
|
|
@@ -8144,9 +9498,9 @@ function startWorkerRpcHost(options) {
|
|
|
8144
9498
|
function buildContext() {
|
|
8145
9499
|
return {
|
|
8146
9500
|
get manifest() {
|
|
8147
|
-
if (!
|
|
9501
|
+
if (!manifest2)
|
|
8148
9502
|
throw new Error("Plugin context accessed before initialization");
|
|
8149
|
-
return
|
|
9503
|
+
return manifest2;
|
|
8150
9504
|
},
|
|
8151
9505
|
config: {
|
|
8152
9506
|
async get() {
|
|
@@ -8155,9 +9509,9 @@ function startWorkerRpcHost(options) {
|
|
|
8155
9509
|
},
|
|
8156
9510
|
localFolders: {
|
|
8157
9511
|
declarations() {
|
|
8158
|
-
if (!
|
|
9512
|
+
if (!manifest2)
|
|
8159
9513
|
throw new Error("Plugin context accessed before initialization");
|
|
8160
|
-
return
|
|
9514
|
+
return manifest2.localFolders ?? [];
|
|
8161
9515
|
},
|
|
8162
9516
|
async configure(input) {
|
|
8163
9517
|
return callHost("localFolders.configure", {
|
|
@@ -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
|
}
|
|
@@ -8925,7 +10306,7 @@ function startWorkerRpcHost(options) {
|
|
|
8925
10306
|
if (initialized) {
|
|
8926
10307
|
throw new Error("Worker already initialized");
|
|
8927
10308
|
}
|
|
8928
|
-
|
|
10309
|
+
manifest2 = params.manifest;
|
|
8929
10310
|
currentConfig = params.config;
|
|
8930
10311
|
databaseNamespace = params.databaseNamespace ?? null;
|
|
8931
10312
|
await plugin2.definition.setup(ctx);
|
|
@@ -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) {
|
|
@@ -9266,6 +10711,91 @@ import os from "node:os";
|
|
|
9266
10711
|
import path2 from "node:path";
|
|
9267
10712
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
9268
10713
|
|
|
10714
|
+
// src/manifest.ts
|
|
10715
|
+
var manifest = {
|
|
10716
|
+
id: "starlein.paperclip-plugin-company-wizard",
|
|
10717
|
+
apiVersion: 1,
|
|
10718
|
+
version: "0.4.20",
|
|
10719
|
+
displayName: "Company Wizard",
|
|
10720
|
+
description: "AI-powered wizard to bootstrap agent companies from composable templates",
|
|
10721
|
+
author: "Sascha Pietrowski <sp@speednetwork.de>",
|
|
10722
|
+
categories: ["workspace", "ui"],
|
|
10723
|
+
minimumHostVersion: "2026.707.0",
|
|
10724
|
+
capabilities: [
|
|
10725
|
+
"companies.read",
|
|
10726
|
+
"issues.create",
|
|
10727
|
+
"issues.read",
|
|
10728
|
+
"issues.update",
|
|
10729
|
+
"goals.create",
|
|
10730
|
+
"goals.read",
|
|
10731
|
+
"agents.read",
|
|
10732
|
+
"projects.read",
|
|
10733
|
+
"skills.managed",
|
|
10734
|
+
"plugin.state.read",
|
|
10735
|
+
"plugin.state.write",
|
|
10736
|
+
"secrets.read-ref",
|
|
10737
|
+
"events.subscribe",
|
|
10738
|
+
"ui.page.register",
|
|
10739
|
+
"ui.sidebar.register"
|
|
10740
|
+
],
|
|
10741
|
+
instanceConfigSchema: {
|
|
10742
|
+
type: "object",
|
|
10743
|
+
properties: {
|
|
10744
|
+
companiesDir: {
|
|
10745
|
+
type: "string",
|
|
10746
|
+
description: "Directory where assembled company workspaces are written. Auto-detected: ~/instances/default/companies in Docker setups, ~/.paperclip/instances/default/companies otherwise. Rarely needs manual override."
|
|
10747
|
+
},
|
|
10748
|
+
templatesPath: {
|
|
10749
|
+
type: "string",
|
|
10750
|
+
description: "Path to the templates directory. Auto-detected: ~/plugin-templates in Docker setups, ~/.paperclip/plugin-templates otherwise. Rarely needs manual override."
|
|
10751
|
+
},
|
|
10752
|
+
templatesRepoUrl: {
|
|
10753
|
+
type: "string",
|
|
10754
|
+
default: "https://github.com/starlein/paperclip-plugin-company-wizard/tree/main/templates",
|
|
10755
|
+
description: "GitHub tree URL for template downloads. The default is correct for most setups \u2014 only change this if using a custom fork."
|
|
10756
|
+
},
|
|
10757
|
+
anthropicApiKey: {
|
|
10758
|
+
type: "string",
|
|
10759
|
+
description: "Anthropic API key for the AI wizard (e.g. sk-ant-...). Required to use the AI-powered company setup path."
|
|
10760
|
+
},
|
|
10761
|
+
paperclipUrl: {
|
|
10762
|
+
type: "string",
|
|
10763
|
+
description: "Paperclip instance URL. Defaults to http://localhost:3100 or the PAPERCLIP_PUBLIC_URL env var."
|
|
10764
|
+
},
|
|
10765
|
+
paperclipEmail: {
|
|
10766
|
+
type: "string",
|
|
10767
|
+
description: "Board login email (for authenticated instances)."
|
|
10768
|
+
},
|
|
10769
|
+
paperclipPassword: {
|
|
10770
|
+
type: "string",
|
|
10771
|
+
description: "Board login password (for authenticated instances)."
|
|
10772
|
+
}
|
|
10773
|
+
}
|
|
10774
|
+
},
|
|
10775
|
+
entrypoints: {
|
|
10776
|
+
worker: "./dist/worker.js",
|
|
10777
|
+
ui: "./dist/ui"
|
|
10778
|
+
},
|
|
10779
|
+
ui: {
|
|
10780
|
+
slots: [
|
|
10781
|
+
{
|
|
10782
|
+
type: "page",
|
|
10783
|
+
id: "company-wizard",
|
|
10784
|
+
displayName: "Company Wizard",
|
|
10785
|
+
exportName: "WizardPage",
|
|
10786
|
+
routePath: "company-creator"
|
|
10787
|
+
},
|
|
10788
|
+
{
|
|
10789
|
+
type: "sidebar",
|
|
10790
|
+
id: "company-wizard-link",
|
|
10791
|
+
displayName: "Create Company",
|
|
10792
|
+
exportName: "SidebarLink"
|
|
10793
|
+
}
|
|
10794
|
+
]
|
|
10795
|
+
}
|
|
10796
|
+
};
|
|
10797
|
+
var manifest_default = manifest;
|
|
10798
|
+
|
|
9269
10799
|
// src/logic/assemble.js
|
|
9270
10800
|
import {
|
|
9271
10801
|
access,
|
|
@@ -9280,12 +10810,12 @@ import { join } from "node:path";
|
|
|
9280
10810
|
|
|
9281
10811
|
// src/logic/ceo-defaults.js
|
|
9282
10812
|
var DEFAULT_CEO_ADAPTER_TYPE = "codex_local";
|
|
9283
|
-
var DEFAULT_CEO_MODEL = "gpt-5.
|
|
10813
|
+
var DEFAULT_CEO_MODEL = "gpt-5.6";
|
|
9284
10814
|
var DEFAULT_CEO_THINKING_LEVEL = "high";
|
|
9285
10815
|
var DEFAULT_WORKER_THINKING_LEVEL = "auto";
|
|
9286
10816
|
var DEFAULT_CEO_MAX_CONCURRENT_RUNS = 1;
|
|
9287
10817
|
var DEFAULT_CEO_HEARTBEAT_INTERVAL_SEC = 3600;
|
|
9288
|
-
var DEFAULT_CLAUDE_CEO_MODEL = "claude-opus-4-
|
|
10818
|
+
var DEFAULT_CLAUDE_CEO_MODEL = "claude-opus-4-8";
|
|
9289
10819
|
function asTrimmedString(value) {
|
|
9290
10820
|
return typeof value === "string" ? value.trim() : "";
|
|
9291
10821
|
}
|
|
@@ -9363,6 +10893,66 @@ function buildWorkerAgentRuntimeConfig() {
|
|
|
9363
10893
|
};
|
|
9364
10894
|
}
|
|
9365
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
|
+
|
|
9366
10956
|
// src/logic/assemble.js
|
|
9367
10957
|
async function exists(p) {
|
|
9368
10958
|
try {
|
|
@@ -9621,6 +11211,7 @@ ${stages.join("\n")}
|
|
|
9621
11211
|
});
|
|
9622
11212
|
}
|
|
9623
11213
|
initialIssues.unshift(...resolvedUserIssues);
|
|
11214
|
+
const skillRecords = [];
|
|
9624
11215
|
for (const moduleName of moduleNames) {
|
|
9625
11216
|
const moduleDir = join(templatesDir, "modules", moduleName);
|
|
9626
11217
|
if (!await exists(moduleDir)) {
|
|
@@ -9716,30 +11307,33 @@ ${stages.join("\n")}
|
|
|
9716
11307
|
async function installSkill(roleName, fileName, label) {
|
|
9717
11308
|
const resolved = await resolveSkillFile(roleName, fileName);
|
|
9718
11309
|
if (!resolved) return false;
|
|
9719
|
-
const
|
|
9720
|
-
|
|
9721
|
-
|
|
9722
|
-
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");
|
|
9723
11313
|
let barApplied = false;
|
|
9724
11314
|
if (enableEnrichedPersonas && label === "primary") {
|
|
9725
|
-
const
|
|
9726
|
-
const bar = await resolveSkillFile(roleName, barFileName);
|
|
11315
|
+
const bar = await resolveSkillFile(roleName, fileName.replace(/\.md$/, ".bar.md"));
|
|
9727
11316
|
if (bar) {
|
|
9728
11317
|
const barContent = await readFile(bar.path, "utf-8");
|
|
9729
|
-
|
|
11318
|
+
markdown = `${markdown.trimEnd()}
|
|
11319
|
+
|
|
11320
|
+
${barContent.trim()}
|
|
11321
|
+
`;
|
|
9730
11322
|
barApplied = true;
|
|
9731
11323
|
}
|
|
9732
11324
|
}
|
|
9733
|
-
|
|
9734
|
-
|
|
9735
|
-
|
|
9736
|
-
|
|
9737
|
-
|
|
9738
|
-
|
|
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
|
+
});
|
|
9739
11333
|
const sourceTag = resolved.source === "shared" ? ", shared" : "";
|
|
9740
11334
|
const barTag = barApplied ? ", output bar" : "";
|
|
9741
11335
|
onProgress(
|
|
9742
|
-
`+
|
|
11336
|
+
`+ skill ${skillSlug(baseName, variant)} \u2192 ${roleName} (${moduleName}, ${label}${sourceTag}${barTag})`
|
|
9743
11337
|
);
|
|
9744
11338
|
return true;
|
|
9745
11339
|
}
|
|
@@ -9766,20 +11360,38 @@ Read and follow: \`skills/${fileName}\`
|
|
|
9766
11360
|
const skillName = skillFile.replace(/\.md$/, "");
|
|
9767
11361
|
const skillBaseName = skillName.replace(/\.fallback$/, "");
|
|
9768
11362
|
if (capabilityOwners.has(skillBaseName)) continue;
|
|
9769
|
-
const
|
|
9770
|
-
|
|
9771
|
-
await
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
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})`);
|
|
9779
11375
|
}
|
|
9780
11376
|
}
|
|
9781
11377
|
}
|
|
9782
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
|
+
}
|
|
9783
11395
|
const HEARTBEAT_MARKER = "<!-- Module heartbeat sections are inserted above this line during assembly -->";
|
|
9784
11396
|
for (const moduleName of moduleNames) {
|
|
9785
11397
|
const moduleDir = join(templatesDir, "modules", moduleName);
|
|
@@ -10187,7 +11799,7 @@ Read: \`../../docs/${doc}\`
|
|
|
10187
11799
|
...executionWorkspacePolicy ? { executionWorkspacePolicy } : {}
|
|
10188
11800
|
};
|
|
10189
11801
|
})() : null;
|
|
10190
|
-
const mainProjectPreCreated = initialRoutines.
|
|
11802
|
+
const mainProjectPreCreated = initialRoutines.some(routineUsesProjectWorkspace) && mainProjectInfo !== null;
|
|
10191
11803
|
if (resolvedProjects.length > 0) {
|
|
10192
11804
|
bootstrap += `## Projects
|
|
10193
11805
|
|
|
@@ -10363,7 +11975,10 @@ Read: \`../../docs/${doc}\`
|
|
|
10363
11975
|
["schedule", routine.schedule],
|
|
10364
11976
|
["priority", routine.priority || "medium"],
|
|
10365
11977
|
["concurrencyPolicy", routine.concurrencyPolicy || "skip_if_active"],
|
|
10366
|
-
[
|
|
11978
|
+
[
|
|
11979
|
+
"projectId",
|
|
11980
|
+
routineUsesProjectWorkspace(routine) ? `\u2192 "${mainProjectName}"` : "none (control-plane routine; no project worktree)"
|
|
11981
|
+
]
|
|
10367
11982
|
]);
|
|
10368
11983
|
if (routine.description) {
|
|
10369
11984
|
bootstrap += `${escapeBody(routine.description)}
|
|
@@ -10420,6 +12035,20 @@ Read: \`../../docs/${doc}\`
|
|
|
10420
12035
|
}
|
|
10421
12036
|
bootstrap += `${stepN}. **Start CEO heartbeat** (one-time initial wakeup)
|
|
10422
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
|
+
}
|
|
10423
12052
|
await writeFile(join(companyDir, "BOOTSTRAP.md"), bootstrap);
|
|
10424
12053
|
onProgress("+ BOOTSTRAP.md");
|
|
10425
12054
|
return {
|
|
@@ -10428,6 +12057,8 @@ Read: \`../../docs/${doc}\`
|
|
|
10428
12057
|
initialIssues,
|
|
10429
12058
|
initialRoutines,
|
|
10430
12059
|
roleAdapterOverrides,
|
|
12060
|
+
companySkills,
|
|
12061
|
+
roleSkillSlugs,
|
|
10431
12062
|
mainProject: mainProjectInfo
|
|
10432
12063
|
};
|
|
10433
12064
|
}
|
|
@@ -10600,6 +12231,27 @@ var PaperclipClient = class {
|
|
|
10600
12231
|
async getCompany(companyId) {
|
|
10601
12232
|
return this._fetch(`/api/companies/${companyId}`, { method: "GET" });
|
|
10602
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
|
+
}
|
|
10603
12255
|
async listAgents(companyId) {
|
|
10604
12256
|
return this._fetch(`/api/companies/${companyId}/agents`, { method: "GET" });
|
|
10605
12257
|
}
|
|
@@ -10743,14 +12395,14 @@ var PaperclipClient = class {
|
|
|
10743
12395
|
executionWorkspaceSettings,
|
|
10744
12396
|
executionPolicy,
|
|
10745
12397
|
blockedByIssueIds,
|
|
10746
|
-
|
|
12398
|
+
watchdog
|
|
10747
12399
|
}) {
|
|
10748
12400
|
return this._fetch(`/api/companies/${companyId}/issues`, {
|
|
10749
12401
|
method: "POST",
|
|
10750
12402
|
body: JSON.stringify({
|
|
10751
12403
|
title,
|
|
10752
12404
|
description: description || null,
|
|
10753
|
-
status: status ||
|
|
12405
|
+
status: status || "todo",
|
|
10754
12406
|
priority: priority || "medium",
|
|
10755
12407
|
parentId: parentId || void 0,
|
|
10756
12408
|
projectId: projectId || void 0,
|
|
@@ -10763,7 +12415,9 @@ var PaperclipClient = class {
|
|
|
10763
12415
|
executionWorkspaceSettings: executionWorkspaceSettings || void 0,
|
|
10764
12416
|
executionPolicy: executionPolicy || void 0,
|
|
10765
12417
|
blockedByIssueIds: blockedByIssueIds || void 0,
|
|
10766
|
-
|
|
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
|
|
10767
12421
|
})
|
|
10768
12422
|
});
|
|
10769
12423
|
}
|
|
@@ -10773,6 +12427,26 @@ var PaperclipClient = class {
|
|
|
10773
12427
|
body: JSON.stringify(updates || {})
|
|
10774
12428
|
});
|
|
10775
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
|
+
}
|
|
10776
12450
|
async putIssueDocument(issueId, key, { title, format, body, baseRevisionId }) {
|
|
10777
12451
|
return this._fetch(`/api/issues/${issueId}/documents/${encodeURIComponent(key)}`, {
|
|
10778
12452
|
method: "PUT",
|
|
@@ -11028,8 +12702,22 @@ var __dirname = path2.dirname(fileURLToPath2(import.meta.url));
|
|
|
11028
12702
|
var DEFAULT_TEMPLATES_REPO_URL = "https://github.com/starlein/paperclip-plugin-company-wizard/tree/main/templates";
|
|
11029
12703
|
var BUNDLED_TEMPLATES_DIR = path2.resolve(__dirname, "..", "templates");
|
|
11030
12704
|
var PLUGIN_PACKAGE_NAME = "@starlein/paperclip-plugin-company-wizard";
|
|
11031
|
-
var CURRENT_PLUGIN_VERSION =
|
|
12705
|
+
var CURRENT_PLUGIN_VERSION = manifest_default.version;
|
|
11032
12706
|
var NPM_LATEST_URL = "https://registry.npmjs.org/@starlein%2Fpaperclip-plugin-company-wizard/latest";
|
|
12707
|
+
async function fetchLatestPluginVersion() {
|
|
12708
|
+
const response = await fetch(NPM_LATEST_URL, {
|
|
12709
|
+
headers: { accept: "application/json" }
|
|
12710
|
+
});
|
|
12711
|
+
if (!response.ok) {
|
|
12712
|
+
throw new Error(`npm registry returned ${response.status}`);
|
|
12713
|
+
}
|
|
12714
|
+
const data = await response.json();
|
|
12715
|
+
const latestVersion = typeof data.version === "string" ? data.version.trim() : "";
|
|
12716
|
+
if (!latestVersion) {
|
|
12717
|
+
throw new Error("npm registry response did not include a version");
|
|
12718
|
+
}
|
|
12719
|
+
return latestVersion;
|
|
12720
|
+
}
|
|
11033
12721
|
function copyDirSync(src, dest) {
|
|
11034
12722
|
fs2.mkdirSync(dest, { recursive: true });
|
|
11035
12723
|
for (const entry of fs2.readdirSync(src, { withFileTypes: true })) {
|
|
@@ -11385,15 +13073,50 @@ async function setExternalInstructionsBundle({
|
|
|
11385
13073
|
);
|
|
11386
13074
|
}
|
|
11387
13075
|
}
|
|
11388
|
-
function
|
|
11389
|
-
const
|
|
11390
|
-
if (!
|
|
11391
|
-
|
|
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
|
+
);
|
|
11392
13087
|
}
|
|
11393
|
-
|
|
11394
|
-
|
|
11395
|
-
|
|
11396
|
-
}
|
|
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;
|
|
11397
13120
|
}
|
|
11398
13121
|
function routineTemplateTitle(routine) {
|
|
11399
13122
|
if (typeof routine?.title === "string" && routine.title.trim()) return routine.title.trim();
|
|
@@ -11499,6 +13222,7 @@ async function syncExistingCompanyRoutines({
|
|
|
11499
13222
|
title,
|
|
11500
13223
|
description: routine.description || null,
|
|
11501
13224
|
assigneeAgentId,
|
|
13225
|
+
...routineProjectPayload(routine, void 0, { sync: true }),
|
|
11502
13226
|
priority: routine.priority || "medium",
|
|
11503
13227
|
status: routine.status || "active",
|
|
11504
13228
|
concurrencyPolicy: routine.concurrencyPolicy || "skip_if_active",
|
|
@@ -11622,34 +13346,52 @@ var plugin = definePlugin({
|
|
|
11622
13346
|
});
|
|
11623
13347
|
ctx.actions.register("check-update", async () => {
|
|
11624
13348
|
try {
|
|
11625
|
-
const
|
|
11626
|
-
|
|
11627
|
-
|
|
11628
|
-
|
|
11629
|
-
|
|
11630
|
-
|
|
11631
|
-
|
|
11632
|
-
|
|
11633
|
-
|
|
11634
|
-
|
|
11635
|
-
|
|
11636
|
-
|
|
11637
|
-
|
|
11638
|
-
|
|
13349
|
+
const latestVersion = await fetchLatestPluginVersion();
|
|
13350
|
+
return {
|
|
13351
|
+
ok: true,
|
|
13352
|
+
packageName: PLUGIN_PACKAGE_NAME,
|
|
13353
|
+
currentVersion: CURRENT_PLUGIN_VERSION,
|
|
13354
|
+
latestVersion,
|
|
13355
|
+
updateAvailable: isNewerVersion(latestVersion, CURRENT_PLUGIN_VERSION),
|
|
13356
|
+
url: "https://www.npmjs.com/package/@starlein/paperclip-plugin-company-wizard"
|
|
13357
|
+
};
|
|
13358
|
+
} catch (err) {
|
|
13359
|
+
return {
|
|
13360
|
+
ok: false,
|
|
13361
|
+
currentVersion: CURRENT_PLUGIN_VERSION,
|
|
13362
|
+
packageName: PLUGIN_PACKAGE_NAME,
|
|
13363
|
+
error: err instanceof Error ? err.message : String(err)
|
|
13364
|
+
};
|
|
13365
|
+
}
|
|
13366
|
+
});
|
|
13367
|
+
ctx.actions.register("prepare-plugin-update", async () => {
|
|
13368
|
+
try {
|
|
13369
|
+
const latestVersion = await fetchLatestPluginVersion();
|
|
13370
|
+
const updateAvailable = isNewerVersion(latestVersion, CURRENT_PLUGIN_VERSION);
|
|
13371
|
+
const cfg = await ctx.config.get() ?? {};
|
|
13372
|
+
const targetDir = refreshTemplatesCache(cfg);
|
|
13373
|
+
const { client } = await connectSharedClient(cfg);
|
|
13374
|
+
const pluginId = await findPluginId(client);
|
|
13375
|
+
if (!pluginId) {
|
|
11639
13376
|
return {
|
|
11640
13377
|
ok: false,
|
|
11641
13378
|
currentVersion: CURRENT_PLUGIN_VERSION,
|
|
11642
|
-
|
|
11643
|
-
|
|
13379
|
+
latestVersion,
|
|
13380
|
+
updateAvailable,
|
|
13381
|
+
templatesUpdated: true,
|
|
13382
|
+
templatesTargetDir: targetDir,
|
|
13383
|
+
error: "Could not find the installed Company Wizard plugin record."
|
|
11644
13384
|
};
|
|
11645
13385
|
}
|
|
11646
13386
|
return {
|
|
11647
13387
|
ok: true,
|
|
13388
|
+
pluginId,
|
|
11648
13389
|
packageName: PLUGIN_PACKAGE_NAME,
|
|
11649
13390
|
currentVersion: CURRENT_PLUGIN_VERSION,
|
|
11650
13391
|
latestVersion,
|
|
11651
|
-
updateAvailable
|
|
11652
|
-
|
|
13392
|
+
updateAvailable,
|
|
13393
|
+
templatesUpdated: true,
|
|
13394
|
+
templatesTargetDir: targetDir
|
|
11653
13395
|
};
|
|
11654
13396
|
} catch (err) {
|
|
11655
13397
|
return {
|
|
@@ -12133,6 +13875,14 @@ var plugin = definePlugin({
|
|
|
12133
13875
|
let routines = [];
|
|
12134
13876
|
try {
|
|
12135
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));
|
|
12136
13886
|
if (existingCompanyId) {
|
|
12137
13887
|
try {
|
|
12138
13888
|
const pluginId = await findPluginId(client);
|
|
@@ -12230,7 +13980,8 @@ var plugin = definePlugin({
|
|
|
12230
13980
|
try {
|
|
12231
13981
|
const ceoPatch = {
|
|
12232
13982
|
adapterType,
|
|
12233
|
-
adapterConfig
|
|
13983
|
+
adapterConfig,
|
|
13984
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12234
13985
|
runtimeConfig: ceoRuntimeConfig,
|
|
12235
13986
|
...ceoMetadata ? { metadata: { ...existingCeo.metadata ?? {}, ...ceoMetadata } } : {}
|
|
12236
13987
|
};
|
|
@@ -12261,6 +14012,7 @@ var plugin = definePlugin({
|
|
|
12261
14012
|
reportsTo: null,
|
|
12262
14013
|
adapterType,
|
|
12263
14014
|
adapterConfig,
|
|
14015
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12264
14016
|
runtimeConfig: ceoRuntimeConfig,
|
|
12265
14017
|
permissions: { canCreateAgents: true },
|
|
12266
14018
|
...boardOperationsIssue?.id ? { sourceIssueId: boardOperationsIssue.id } : {}
|
|
@@ -12280,6 +14032,7 @@ var plugin = definePlugin({
|
|
|
12280
14032
|
reportsTo: null,
|
|
12281
14033
|
adapterType,
|
|
12282
14034
|
adapterConfig,
|
|
14035
|
+
desiredSkills: desiredSkillsForRole("ceo"),
|
|
12283
14036
|
runtimeConfig: ceoRuntimeConfig,
|
|
12284
14037
|
permissions: { canCreateAgents: true },
|
|
12285
14038
|
...boardOperationsIssue?.id ? { sourceIssueId: boardOperationsIssue.id } : {}
|
|
@@ -12346,7 +14099,8 @@ var plugin = definePlugin({
|
|
|
12346
14099
|
try {
|
|
12347
14100
|
await client.updateAgent(existingAgent.id, {
|
|
12348
14101
|
adapterType,
|
|
12349
|
-
adapterConfig:
|
|
14102
|
+
adapterConfig: roleAdapterConfig,
|
|
14103
|
+
desiredSkills: desiredSkillsForRole(roleName),
|
|
12350
14104
|
runtimeConfig: roleRuntimeConfig,
|
|
12351
14105
|
metadata: { ...existingAgent.metadata ?? {}, ...roleMetadata },
|
|
12352
14106
|
...!existingAgent.title && roleTitle ? { title: roleTitle } : {},
|
|
@@ -12378,6 +14132,7 @@ var plugin = definePlugin({
|
|
|
12378
14132
|
reportsTo: ceoAgentId,
|
|
12379
14133
|
adapterType,
|
|
12380
14134
|
adapterConfig: roleAdapterConfig,
|
|
14135
|
+
desiredSkills: desiredSkillsForRole(roleName),
|
|
12381
14136
|
runtimeConfig: roleRuntimeConfig,
|
|
12382
14137
|
...hiringPlanIssue?.id ? { sourceIssueId: hiringPlanIssue.id } : {}
|
|
12383
14138
|
});
|
|
@@ -12400,7 +14155,7 @@ var plugin = definePlugin({
|
|
|
12400
14155
|
if (!existingCompanyId) {
|
|
12401
14156
|
let mainProjectId;
|
|
12402
14157
|
const mainProject = assembleResult.mainProject;
|
|
12403
|
-
if (routines.
|
|
14158
|
+
if (routines.some(routineUsesProjectWorkspace) && mainProject?.name) {
|
|
12404
14159
|
try {
|
|
12405
14160
|
const createdProject = await client.createProject(companyId, {
|
|
12406
14161
|
name: mainProject.name,
|
|
@@ -12428,7 +14183,7 @@ var plugin = definePlugin({
|
|
|
12428
14183
|
title,
|
|
12429
14184
|
description: routine.description,
|
|
12430
14185
|
assigneeAgentId,
|
|
12431
|
-
|
|
14186
|
+
...routineProjectPayload(routine, mainProjectId),
|
|
12432
14187
|
priority: routine.priority || "medium",
|
|
12433
14188
|
concurrencyPolicy: routine.concurrencyPolicy || "skip_if_active",
|
|
12434
14189
|
catchUpPolicy: routine.catchUpPolicy || "skip_missed"
|
|
@@ -12472,6 +14227,17 @@ var plugin = definePlugin({
|
|
|
12472
14227
|
});
|
|
12473
14228
|
bootstrapIssue = issue;
|
|
12474
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
|
+
}
|
|
12475
14241
|
} catch (err) {
|
|
12476
14242
|
log(`\u2717 Provisioning failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
12477
14243
|
if (createdCompany) {
|