@rosthq/cli 0.7.62 → 0.7.63
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/dist/index.js +138 -9
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -37801,6 +37801,104 @@ import { readFileSync } from "node:fs";
|
|
|
37801
37801
|
import { dirname, join } from "node:path";
|
|
37802
37802
|
import { fileURLToPath } from "node:url";
|
|
37803
37803
|
|
|
37804
|
+
// ../../packages/protocol/src/cron.ts
|
|
37805
|
+
var uintPattern = /^\d+$/;
|
|
37806
|
+
var CRON_FIELD_SPECS = [
|
|
37807
|
+
{ name: "minute", min: 0, max: 59 },
|
|
37808
|
+
{ name: "hour", min: 0, max: 23 },
|
|
37809
|
+
{ name: "day-of-month", min: 1, max: 31 },
|
|
37810
|
+
{ name: "month", min: 1, max: 12 },
|
|
37811
|
+
{ name: "day-of-week", min: 0, max: 7 }
|
|
37812
|
+
];
|
|
37813
|
+
var CRON_FIELD_COUNT = CRON_FIELD_SPECS.length;
|
|
37814
|
+
function parseCronField(raw, spec) {
|
|
37815
|
+
const parts = raw.split(",");
|
|
37816
|
+
const terms = [];
|
|
37817
|
+
for (const part of parts) {
|
|
37818
|
+
const token = part.trim();
|
|
37819
|
+
if (token.length === 0) {
|
|
37820
|
+
return { ok: false, reason: "empty value in list" };
|
|
37821
|
+
}
|
|
37822
|
+
if (token === "*") {
|
|
37823
|
+
terms.push({ kind: "all" });
|
|
37824
|
+
continue;
|
|
37825
|
+
}
|
|
37826
|
+
if (token.startsWith("*/")) {
|
|
37827
|
+
const stepText = token.slice(2);
|
|
37828
|
+
if (!uintPattern.test(stepText)) {
|
|
37829
|
+
return { ok: false, reason: `"${token}" is not a valid step` };
|
|
37830
|
+
}
|
|
37831
|
+
const step = Number(stepText);
|
|
37832
|
+
if (step < 1 || step > spec.max) {
|
|
37833
|
+
return { ok: false, reason: `step in "${token}" must be between 1 and ${spec.max}` };
|
|
37834
|
+
}
|
|
37835
|
+
terms.push({ kind: "step", step });
|
|
37836
|
+
continue;
|
|
37837
|
+
}
|
|
37838
|
+
if (token.includes("-")) {
|
|
37839
|
+
const segments = token.split("-");
|
|
37840
|
+
if (segments.length !== 2 || !uintPattern.test(segments[0] ?? "") || !uintPattern.test(segments[1] ?? "")) {
|
|
37841
|
+
return { ok: false, reason: `"${token}" is not a valid range` };
|
|
37842
|
+
}
|
|
37843
|
+
const start = Number(segments[0]);
|
|
37844
|
+
const end = Number(segments[1]);
|
|
37845
|
+
if (start < spec.min || end > spec.max || start > end) {
|
|
37846
|
+
return { ok: false, reason: `range "${token}" must be within ${spec.min}-${spec.max} and ascending` };
|
|
37847
|
+
}
|
|
37848
|
+
terms.push({ kind: "range", start, end });
|
|
37849
|
+
continue;
|
|
37850
|
+
}
|
|
37851
|
+
if (uintPattern.test(token)) {
|
|
37852
|
+
const value = Number(token);
|
|
37853
|
+
if (value < spec.min || value > spec.max) {
|
|
37854
|
+
return { ok: false, reason: `"${token}" must be between ${spec.min} and ${spec.max}` };
|
|
37855
|
+
}
|
|
37856
|
+
terms.push({ kind: "value", value });
|
|
37857
|
+
continue;
|
|
37858
|
+
}
|
|
37859
|
+
return { ok: false, reason: `"${token}" is not a supported cron token` };
|
|
37860
|
+
}
|
|
37861
|
+
return { ok: true, field: terms };
|
|
37862
|
+
}
|
|
37863
|
+
function parseCronExpression(expression) {
|
|
37864
|
+
const trimmed = expression.trim();
|
|
37865
|
+
if (trimmed.length === 0) {
|
|
37866
|
+
return { ok: false, message: "Schedule must not be empty." };
|
|
37867
|
+
}
|
|
37868
|
+
if (/[\r\n\u2028\u2029]/.test(trimmed)) {
|
|
37869
|
+
return { ok: false, message: "Schedule must be a single-line cron expression." };
|
|
37870
|
+
}
|
|
37871
|
+
if (/[^0-9*/,\t\x20-]/.test(trimmed)) {
|
|
37872
|
+
return { ok: false, message: "Schedule may only contain digits, spaces, and the characters * / , -" };
|
|
37873
|
+
}
|
|
37874
|
+
const rawFields = trimmed.split(/\s+/);
|
|
37875
|
+
if (rawFields.length !== CRON_FIELD_COUNT) {
|
|
37876
|
+
return {
|
|
37877
|
+
ok: false,
|
|
37878
|
+
message: `Schedule must have exactly ${CRON_FIELD_COUNT} fields (minute hour day-of-month month day-of-week); got ${rawFields.length}.`
|
|
37879
|
+
};
|
|
37880
|
+
}
|
|
37881
|
+
const fields = [];
|
|
37882
|
+
for (let i = 0; i < CRON_FIELD_COUNT; i += 1) {
|
|
37883
|
+
const spec = CRON_FIELD_SPECS[i];
|
|
37884
|
+
const result = parseCronField(rawFields[i], spec);
|
|
37885
|
+
if (!result.ok) {
|
|
37886
|
+
return { ok: false, message: `Invalid ${spec.name} field: ${result.reason}.` };
|
|
37887
|
+
}
|
|
37888
|
+
fields.push(result.field);
|
|
37889
|
+
}
|
|
37890
|
+
return { ok: true, cron: { fields } };
|
|
37891
|
+
}
|
|
37892
|
+
var cronExpressionSchema = external_exports.string().trim().min(1).max(120).superRefine((value, ctx) => {
|
|
37893
|
+
if (value.length > 120) {
|
|
37894
|
+
return;
|
|
37895
|
+
}
|
|
37896
|
+
const result = parseCronExpression(value);
|
|
37897
|
+
if (!result.ok) {
|
|
37898
|
+
ctx.addIssue({ code: external_exports.ZodIssueCode.custom, message: result.message });
|
|
37899
|
+
}
|
|
37900
|
+
});
|
|
37901
|
+
|
|
37804
37902
|
// ../../packages/protocol/src/agent-model-config.ts
|
|
37805
37903
|
var agentModelProviderSchema = external_exports.enum(["anthropic"]);
|
|
37806
37904
|
var agentModelEffortSchema = external_exports.enum(["low", "medium", "high", "xhigh", "max"]);
|
|
@@ -37923,7 +38021,7 @@ var dryRunTranscriptSchema = external_exports.object({
|
|
|
37923
38021
|
}).strict();
|
|
37924
38022
|
|
|
37925
38023
|
// ../../packages/protocol/src/scrub.ts
|
|
37926
|
-
var SECRET_SHAPED_VALUE = /(sk-ant-|sk-proj-|sk-live-|sk-[A-Za-z0-9_-]{12,}|
|
|
38024
|
+
var SECRET_SHAPED_VALUE = /(rost_mcp_[A-Za-z0-9_-]{20,}|sk-ant-|sk-proj-|sk-live-|sk-[A-Za-z0-9_-]{12,}|gh[opsur]_[A-Za-z0-9_]{12,}|github_pat_[A-Za-z0-9_]{20,}|xox[baoprs]-[A-Za-z0-9-]{10,}|(?:AKIA|ASIA)[0-9A-Z]{16}|BEGIN [A-Z ]*PRIVATE KEY|api[_-]?key\s*=|secret\s*=|password\s*=|authorization:\s*bearer\s+|(?:bearer|basic)\s+[A-Za-z0-9._~+/=-]{20,}|x-api-key\s*:|api[-_ ]?key\s*:\s*\S{3,}|secret\s*:\s*\S{3,}|password\s*:\s*\S{3,}|token\s*:\s*\S{3,})/i;
|
|
37927
38025
|
var SECRET_KEY = /(api[_-]?key|secret|password|token|authorization|credential|private[_-]?key)/i;
|
|
37928
38026
|
function hasSecretShapedContent(value) {
|
|
37929
38027
|
if (typeof value === "string") {
|
|
@@ -38677,7 +38775,7 @@ var agentLifecycleSchema = external_exports.enum([
|
|
|
38677
38775
|
"paused",
|
|
38678
38776
|
"decommissioned"
|
|
38679
38777
|
]);
|
|
38680
|
-
var cronSchema =
|
|
38778
|
+
var cronSchema = cronExpressionSchema;
|
|
38681
38779
|
var agentTemplateListInputSchema = external_exports.object({}).strict();
|
|
38682
38780
|
var agentTemplateSummarySchema = external_exports.object({
|
|
38683
38781
|
slug: external_exports.string().min(1),
|
|
@@ -38785,6 +38883,11 @@ var agentSetupStateSchema = external_exports.object({
|
|
|
38785
38883
|
steward_seat_id: uuidSchema2.nullable(),
|
|
38786
38884
|
steward_chain_resolves_to_human: external_exports.boolean(),
|
|
38787
38885
|
has_occupancy: external_exports.boolean(),
|
|
38886
|
+
// DER-1529: the seat agent's run-time skill-discovery toggle. VISIBILITY only —
|
|
38887
|
+
// it never grants tools (invariant #6). Always present (the column is NOT NULL
|
|
38888
|
+
// default false) so agent_setup.get / .update round-trip the current value back
|
|
38889
|
+
// to any client; conservative default false (#10).
|
|
38890
|
+
skill_discovery_enabled: external_exports.boolean(),
|
|
38788
38891
|
tool_decisions: external_exports.array(agentSetupToolDecisionSchema),
|
|
38789
38892
|
available_skill_recommendations: external_exports.array(agentSetupSkillRecommendationSchema),
|
|
38790
38893
|
assigned_skills: external_exports.array(skillAssignmentSummarySchema),
|
|
@@ -38816,9 +38919,12 @@ var agentSetupUpdateInputSchema = external_exports.object({
|
|
|
38816
38919
|
// DER-787 (H1): set the structured model selection for this agent.
|
|
38817
38920
|
model_config: agentModelConfigSchema.optional(),
|
|
38818
38921
|
answers: external_exports.array(external_exports.string().min(1).max(2e3)).max(20).optional(),
|
|
38819
|
-
tool_decisions: external_exports.array(agentSetupToolUpdateSchema).max(50).optional()
|
|
38922
|
+
tool_decisions: external_exports.array(agentSetupToolUpdateSchema).max(50).optional(),
|
|
38923
|
+
// DER-1529: toggle run-time skill discovery (visibility only; never grants
|
|
38924
|
+
// tools). Settable any time, including on a live agent.
|
|
38925
|
+
skill_discovery_enabled: external_exports.boolean().optional()
|
|
38820
38926
|
}).strict().refine(
|
|
38821
|
-
(value) => value.parent_seat_id !== void 0 || value.steward_seat_id !== void 0 || value.lane !== void 0 || value.schedule_cron !== void 0 || value.model_config !== void 0 || value.answers !== void 0 || value.tool_decisions !== void 0,
|
|
38927
|
+
(value) => value.parent_seat_id !== void 0 || value.steward_seat_id !== void 0 || value.lane !== void 0 || value.schedule_cron !== void 0 || value.model_config !== void 0 || value.answers !== void 0 || value.tool_decisions !== void 0 || value.skill_discovery_enabled !== void 0,
|
|
38822
38928
|
"Provide at least one field to update."
|
|
38823
38929
|
);
|
|
38824
38930
|
var agentUpdateScheduleInputSchema = external_exports.object({
|
|
@@ -41208,6 +41314,7 @@ var MCP_ONBOARDING_TOOL_NAMES = {
|
|
|
41208
41314
|
};
|
|
41209
41315
|
var FORGE_TURN_HARD_CEILING_SECONDS = 30 * 60;
|
|
41210
41316
|
var FORGE_TURN_PHASE_OVERHEAD_SECONDS = 20 * 60;
|
|
41317
|
+
var SEAT_MCP_CLAIM_TOKEN_TTL_SECONDS = (FORGE_TURN_HARD_CEILING_SECONDS + FORGE_TURN_PHASE_OVERHEAD_SECONDS) * 2;
|
|
41211
41318
|
|
|
41212
41319
|
// ../../packages/protocol/src/mcp-onboarding.ts
|
|
41213
41320
|
var MCP_TOKEN_ABSOLUTE_MAX_EXPIRY_MS = (MCP_TOKEN_NO_EXPIRY_SENTINEL_DAYS + 1) * 24 * 60 * 60 * 1e3;
|
|
@@ -42181,6 +42288,11 @@ var errorLogSupersedeOutputSchema = external_exports.object({
|
|
|
42181
42288
|
resolved_at: isoDateTime3
|
|
42182
42289
|
}).strict();
|
|
42183
42290
|
|
|
42291
|
+
// ../../packages/protocol/src/run-summary.ts
|
|
42292
|
+
var runSummaryOutputSchema = external_exports.object({
|
|
42293
|
+
summary: external_exports.string().min(1).max(140)
|
|
42294
|
+
});
|
|
42295
|
+
|
|
42184
42296
|
// ../../packages/protocol/src/runner-settings.ts
|
|
42185
42297
|
var uuid8 = external_exports.string().uuid();
|
|
42186
42298
|
var isoDateTime4 = external_exports.string().datetime({ offset: true });
|
|
@@ -44025,6 +44137,23 @@ var softwareVercelDeployPreviewOutputSchema = external_exports.object({
|
|
|
44025
44137
|
status: softwareVercelDeploymentStatusSchema
|
|
44026
44138
|
});
|
|
44027
44139
|
|
|
44140
|
+
// ../../packages/protocol/src/software-factory-events.ts
|
|
44141
|
+
var uuid11 = external_exports.string().uuid();
|
|
44142
|
+
var softwareFactoryPhaseRunCompletedEventSchema = external_exports.object({
|
|
44143
|
+
tenantId: uuid11,
|
|
44144
|
+
phaseRunId: uuid11,
|
|
44145
|
+
buildRequestId: uuid11.nullish(),
|
|
44146
|
+
status: external_exports.enum(["passed", "failed"]),
|
|
44147
|
+
idempotencyKey: external_exports.string().min(1).optional()
|
|
44148
|
+
}).strict();
|
|
44149
|
+
var softwareFactoryBudgetExhaustedEventSchema = external_exports.object({
|
|
44150
|
+
tenantId: uuid11,
|
|
44151
|
+
phaseRunId: uuid11,
|
|
44152
|
+
buildRequestId: uuid11,
|
|
44153
|
+
reason: external_exports.string().min(1),
|
|
44154
|
+
idempotencyKey: external_exports.string().min(1).optional()
|
|
44155
|
+
}).strict();
|
|
44156
|
+
|
|
44028
44157
|
// ../../packages/protocol/src/sync-brief.ts
|
|
44029
44158
|
var uuidSchema15 = external_exports.string().uuid();
|
|
44030
44159
|
var dateSchema = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/);
|
|
@@ -45420,7 +45549,7 @@ For CLI and MCP setup, read agent-skill-setup-guide before adding or assigning S
|
|
|
45420
45549
|
order: 42,
|
|
45421
45550
|
title: "Design a custom agent",
|
|
45422
45551
|
summary: "How to build a custom agent from operational questions through the Charter Builder, tools, dry run, and go-live without writing prompts.",
|
|
45423
|
-
version: "2026-07-
|
|
45552
|
+
version: "2026-07-10.1",
|
|
45424
45553
|
public: true,
|
|
45425
45554
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45426
45555
|
stages: ["staffing", "charter_design"],
|
|
@@ -45466,7 +45595,7 @@ Then choose one of three named triggers:
|
|
|
45466
45595
|
- **Scheduled** \u2014 runs on a recurring cadence you pick (every weekday morning, every morning, weekly, hourly). No cron to write.
|
|
45467
45596
|
- **Event** \u2014 runs in response to work routed to it, like a sync or a mention, rather than on a clock.
|
|
45468
45597
|
|
|
45469
|
-
Open **Advanced** for the explicit lane select and a raw cron expression when you need a custom cadence. The same schedule presets appear on the agent's seat page after go-live (Agent operations \u2192 Run schedule).
|
|
45598
|
+
Open **Advanced** for the explicit lane select and a raw cron expression when you need a custom cadence. A raw schedule is a five-field UTC cron \u2014 \`minute hour day-of-month month day-of-week\` \u2014 supporting \`*\`, \`*/N\` steps, \`A-B\` ranges, and comma lists (for example \`0 9 * * 1-5\`). Day-of-week is 0\u20137 where both 0 and 7 mean Sunday. It is validated when you save: an unsupported or out-of-range expression is rejected with a field-level error rather than saved as a schedule that never runs, and the builder previews the next run in UTC. When both day-of-month and day-of-week are set, a run fires only when both match. The same schedule presets appear on the agent's seat page after go-live (Agent operations \u2192 Run schedule).
|
|
45470
45599
|
|
|
45471
45600
|
## Configure tools and credentials
|
|
45472
45601
|
|
|
@@ -45830,7 +45959,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
45830
45959
|
order: 48,
|
|
45831
45960
|
title: "CLI and MCP installation guide",
|
|
45832
45961
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
45833
|
-
version: "2026-07-10.
|
|
45962
|
+
version: "2026-07-10.3",
|
|
45834
45963
|
public: true,
|
|
45835
45964
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45836
45965
|
stages: ["company_setup", "staffing"],
|
|
@@ -46437,7 +46566,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
46437
46566
|
| \`rost_create_agent_from_template\` | \`agent.create_from_template\` | Create a draft stock agent and draft Charter from a template (draft-only; occupancy needs a human steward). | Tenant | Call with \`seat_id\` and \`template_slug\`; expect human confirmation. |
|
|
46438
46567
|
| \`rost_start_agent_setup\` | \`agent_setup.start\` | Start an agent setup draft for template, custom, or existing mode. | Tenant | Call with \`mode\` and seat placement. |
|
|
46439
46568
|
| \`rost_get_agent_setup\` | \`agent_setup.get\` | Read agent setup state, blockers, and next action. | Seat or tenant-admin | Call with \`{"setup_id":"<id>"}\`. |
|
|
46440
|
-
| \`rost_update_agent_setup\` | \`agent_setup.update\` | Update parent, steward, lane, schedule, or
|
|
46569
|
+
| \`rost_update_agent_setup\` | \`agent_setup.update\` | Update parent, steward, lane, schedule, answers, or skill discovery on a setup draft. | Tenant | Call with \`setup_id\` and the fields to change. |
|
|
46441
46570
|
| \`rost_update_agent_schedule\` | \`agent.update_schedule\` | Update a draft or live agent's scheduled execution. | Tenant | Call with \`agent_id\` and \`schedule_cron\`; expect human confirmation. |
|
|
46442
46571
|
| \`rost_decommission_agent\` | \`agent.decommission\` | Retire an agent occupancy safely (no-orphan guarded). | Tenant | Call with \`agent_id\`; expect human confirmation. |
|
|
46443
46572
|
| \`rost_pause_agent\` | \`agent.pause\` | Pause a live agent so it stops scheduled and on-demand runs; reversible. | Tenant | Call with \`seat_id\`; expect human confirmation. |
|
|
@@ -49676,7 +49805,7 @@ var COMMAND_MANIFEST = [
|
|
|
49676
49805
|
{ "id": "agent_setup.get", "namespace": "agent_setup", "action": "get", "title": "Get agent setup", "description": "Read the resumable agent-setup state: mode, parent, steward, template, lane, schedule, tool decisions, dry run, and next action.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "setup_id", "flag": "setup-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Read the resumable setup state: mode, parent, steward, lane, schedule, tool decisions, dry-run blockers, and the next action." },
|
|
49677
49806
|
{ "id": "agent_setup.relane", "namespace": "agent_setup", "action": "relane", "title": "Re-lane a live agent", "description": "Governed re-lane of a live agent: pause, move to the new lane, force a fresh dry-run rehearsal on that lane, then go live. Owner-only and human-gated; records a rationale.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "lane", "flag": "lane", "type": "enum", "required": true, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "reason", "flag": "reason", "type": "string", "required": true }], "hasComplexInput": false, "help": "Re-lane a live agent (cloud / runner / mcp_session): it pauses, moves to the new lane, forces a fresh dry-run rehearsal on that lane, then goes live \u2014 owner-only, human-gated, with a required rationale. A runner target needs a paired runner; a failed rehearsal leaves the agent paused on the new lane." },
|
|
49678
49807
|
{ "id": "agent_setup.start", "namespace": "agent_setup", "action": "start", "title": "Start agent setup", "description": "Start (or resume) a draft agent setup for a seat in template, custom, or existing mode.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "mode", "flag": "mode", "type": "enum", "required": true, "enumValues": ["template", "custom", "existing"] }, { "name": "template_slug", "flag": "template-slug", "type": "string", "required": false }], "hasComplexInput": false, "help": "Start a draft agent setup from a template, custom, or existing mode; the setup resumes from the draft agent and Charter, not a fresh start." },
|
|
49679
|
-
{ "id": "agent_setup.update", "namespace": "agent_setup", "action": "update", "title": "Update agent setup", "description": "Update the draft agent's parent, steward, lane, schedule, operational answers, and tool decisions.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "parent_seat_id", "flag": "parent-seat-id", "type": "string", "required": false }, { "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": false }, { "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "schedule_cron", "flag": "schedule-cron", "type": "string", "required": false }, { "name": "answers", "flag": "answers", "type": "array", "required": false, "itemType": "string" }], "hasComplexInput": true, "help": "Update parent, steward, lane, schedule, answers, or tool decisions on the draft; steward and parent changes keep the no-orphan chain explicit." },
|
|
49808
|
+
{ "id": "agent_setup.update", "namespace": "agent_setup", "action": "update", "title": "Update agent setup", "description": "Update the draft agent's parent, steward, lane, schedule, operational answers, and tool decisions.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "parent_seat_id", "flag": "parent-seat-id", "type": "string", "required": false }, { "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": false }, { "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "schedule_cron", "flag": "schedule-cron", "type": "string", "required": false }, { "name": "answers", "flag": "answers", "type": "array", "required": false, "itemType": "string" }, { "name": "skill_discovery_enabled", "flag": "skill-discovery-enabled", "type": "boolean", "required": false }], "hasComplexInput": true, "help": "Update parent, steward, lane, schedule, answers, or tool decisions on the draft; steward and parent changes keep the no-orphan chain explicit." },
|
|
49680
49809
|
{ "id": "agent_template.list", "namespace": "agent_template", "action": "list", "title": "List agent templates", "description": "List stock agent templates and their responsibilities, default tools, and dry-run rehearsal.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List stock agent templates and their default tools and safety boundaries before starting a template setup." },
|
|
49681
49810
|
{ "id": "agent.configure_tools", "namespace": "agent", "action": "configure_tools", "title": "Configure agent tools", "description": "Save tool proposals, declines, and credential-ingress requests for a draft agent. Never stores or echoes secret material; vault refs only.", "requiredScope": "seat", "confirmation": "credential_flow", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": true, "help": "Connect or decline proposed tools and stage credential-ingress requests; never place raw secrets here \u2014 secrets flow through vault-backed credential.ingress as vault refs only.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "tool_decisions": [{ "tool": "ap.invoices.read", "decision": "connect" }, { "tool": "email.draft", "decision": "connect" }] } },
|
|
49682
49811
|
{ "id": "agent.create_custom", "namespace": "agent", "action": "create_custom", "title": "Create custom agent", "description": "Create a draft custom agent shell and a draft Charter seed from operational answers (what it owns, success, never-do-alone, steward).", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": false }, { "name": "lane", "flag": "lane", "type": "enum", "required": false, "enumValues": ["cloud", "mcp_session", "runner"] }, { "name": "what_it_owns", "flag": "what-it-owns", "type": "string", "required": false }, { "name": "what_success_looks_like", "flag": "what-success-looks-like", "type": "string", "required": false }, { "name": "what_it_must_never_do_alone", "flag": "what-it-must-never-do-alone", "type": "string", "required": false }], "hasComplexInput": true, "help": "Create a draft custom agent from operational answers (what it owns, success, never-do-alone, steward); the Charter Builder owns the contract and go-live stays human-gated.", "example": { "seat_id": "0190aaaa-aaaa-7aaa-8aaa-aaaaaaaaaaaa", "steward_seat_id": "0190bbbb-bbbb-7bbb-8bbb-bbbbbbbbbbbb", "lane": "cloud", "what_it_owns": "Drafting AP invoice entries from inbound vendor emails for human review.", "what_success_looks_like": "Every inbound invoice is drafted within one business day with the correct GL coding.", "what_it_must_never_do_alone": "Never send payment or approve an invoice without a human sign-off." } },
|