@integrity-labs/agt-cli 0.28.176 → 0.28.178
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/bin/agt.js +4 -4
- package/dist/{chunk-NZLZICAD.js → chunk-4LMNQ2V7.js} +2 -2
- package/dist/{chunk-YNCNFORO.js → chunk-MRY24Y4V.js} +172 -22
- package/dist/chunk-MRY24Y4V.js.map +1 -0
- package/dist/{chunk-ULPUDU4J.js → chunk-ODMNVKDO.js} +21 -2
- package/dist/chunk-ODMNVKDO.js.map +1 -0
- package/dist/{claude-pair-runtime-LN4ZVG3A.js → claude-pair-runtime-SPP3GKYK.js} +2 -2
- package/dist/lib/manager-worker.js +14 -8
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/augmented-support.js +21361 -0
- package/dist/mcp/index.js +91 -1
- package/dist/{persistent-session-DHBEAJ6T.js → persistent-session-OBWYOJP7.js} +3 -3
- package/dist/{responsiveness-probe-6XQIUFB7.js → responsiveness-probe-6AKUEVIG.js} +3 -3
- package/package.json +3 -2
- package/dist/chunk-ULPUDU4J.js.map +0 -1
- package/dist/chunk-YNCNFORO.js.map +0 -1
- /package/dist/{chunk-NZLZICAD.js.map → chunk-4LMNQ2V7.js.map} +0 -0
- /package/dist/{claude-pair-runtime-LN4ZVG3A.js.map → claude-pair-runtime-SPP3GKYK.js.map} +0 -0
- /package/dist/{persistent-session-DHBEAJ6T.js.map → persistent-session-OBWYOJP7.js.map} +0 -0
- /package/dist/{responsiveness-probe-6XQIUFB7.js.map → responsiveness-probe-6AKUEVIG.js.map} +0 -0
package/dist/mcp/index.js
CHANGED
|
@@ -21196,6 +21196,26 @@ function describeFeatureRequestResult(resp) {
|
|
|
21196
21196
|
};
|
|
21197
21197
|
}
|
|
21198
21198
|
|
|
21199
|
+
// src/form-request.ts
|
|
21200
|
+
function describeFormRequestResult(resp) {
|
|
21201
|
+
if (resp.ok && resp.status === "pending" && resp.request_id) {
|
|
21202
|
+
return {
|
|
21203
|
+
text: `Form posted to the user. Expect the answer on request \`${resp.request_id}\`. END YOUR TURN now - do NOT re-post or block. When the user submits, their typed answers arrive as a direct-chat message (payload.kind = "form_result", payload.values). If no answer arrives, the form expires after about an hour; follow up or move on rather than waiting forever.`,
|
|
21204
|
+
isError: false
|
|
21205
|
+
};
|
|
21206
|
+
}
|
|
21207
|
+
if (resp.ok && resp.status === "pending") {
|
|
21208
|
+
return {
|
|
21209
|
+
text: "The form post response was malformed (no request_id to correlate the answer). Treat this as failed and tell your operator to check the host response.",
|
|
21210
|
+
isError: true
|
|
21211
|
+
};
|
|
21212
|
+
}
|
|
21213
|
+
return {
|
|
21214
|
+
text: `Could not post the form${resp.error ? `: ${resp.error}` : ""}. Fix the issue (often the channel id or the form schema) and try again, or tell your operator.`,
|
|
21215
|
+
isError: true
|
|
21216
|
+
};
|
|
21217
|
+
}
|
|
21218
|
+
|
|
21199
21219
|
// src/approval-tools.ts
|
|
21200
21220
|
function statusToOutcome(status) {
|
|
21201
21221
|
switch (status) {
|
|
@@ -22302,6 +22322,73 @@ server.tool(
|
|
|
22302
22322
|
};
|
|
22303
22323
|
}
|
|
22304
22324
|
);
|
|
22325
|
+
server.tool(
|
|
22326
|
+
"request_form",
|
|
22327
|
+
'Ask a user to fill out a structured FORM (multiple typed fields) instead of free text, then END YOUR TURN. You author the fields as a small JSON Schema; the platform renders a native Slack form modal, validates the answers, and delivers them back to you as a direct-chat message (payload.kind = "form_result", payload.values), usually within the hour. Use this when you need several specific, well-typed values at once (a short intake, a set of options, structured details) rather than parsing them out of free text. The schema is constrained: a flat object of fields, each a string / number / integer / boolean / array, with optional enum, format (date / time / date-time / email / uri), min/max, and a required list. No nesting or oneOf/anyOf/allOf. Forms only COLLECT input; they do not grant any permission.',
|
|
22328
|
+
{
|
|
22329
|
+
channel_id: external_exports.string().min(1).describe(
|
|
22330
|
+
"Slack channel id (C... or G..., NOT a name) to post the form into. Resolve names via slack.check_channel / slack.list_channels first."
|
|
22331
|
+
),
|
|
22332
|
+
thread_ts: external_exports.string().optional().describe(
|
|
22333
|
+
"Optional Slack thread_ts to post the form inside a thread; omit to post top-level in the channel."
|
|
22334
|
+
),
|
|
22335
|
+
title: external_exports.string().min(1).max(24).describe(
|
|
22336
|
+
"Short form title (max 24 chars - the Slack modal title limit), shown on the button and as the modal heading. Put longer context in intro."
|
|
22337
|
+
),
|
|
22338
|
+
intro: external_exports.string().max(1e3).optional().describe("Optional context shown above the button and inside the modal (what you are asking and why)."),
|
|
22339
|
+
schema: external_exports.record(external_exports.unknown()).describe(
|
|
22340
|
+
'The form definition as a constrained JSON Schema: { "type": "object", "properties": { "<field>": { "type": "string|number|integer|boolean|array", "enum"?: [...], "format"?: "date|time|date-time|email|uri", ... } }, "required": ["..."] }. Flat only - no nested objects or oneOf/anyOf/allOf.'
|
|
22341
|
+
),
|
|
22342
|
+
request_id: external_exports.string().max(200).optional().describe(
|
|
22343
|
+
"Optional correlation id you choose; it comes back on the form_result so you can match the answer to this request. If omitted, the platform assigns one and returns it."
|
|
22344
|
+
)
|
|
22345
|
+
},
|
|
22346
|
+
async (params) => {
|
|
22347
|
+
if (!AGT_AGENT_CODE_NAME) {
|
|
22348
|
+
return {
|
|
22349
|
+
content: [{ type: "text", text: "Error: AGT_AGENT_CODE_NAME not configured." }],
|
|
22350
|
+
isError: true
|
|
22351
|
+
};
|
|
22352
|
+
}
|
|
22353
|
+
let resp;
|
|
22354
|
+
try {
|
|
22355
|
+
resp = await apiPost("/host/request-form", {
|
|
22356
|
+
agent_code_name: AGT_AGENT_CODE_NAME,
|
|
22357
|
+
channel_id: params.channel_id,
|
|
22358
|
+
...params.thread_ts ? { thread_ts: params.thread_ts } : {},
|
|
22359
|
+
title: params.title,
|
|
22360
|
+
...params.intro ? { intro: params.intro } : {},
|
|
22361
|
+
schema: params.schema,
|
|
22362
|
+
...params.request_id ? { request_id: params.request_id } : {}
|
|
22363
|
+
});
|
|
22364
|
+
} catch (err) {
|
|
22365
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
22366
|
+
if (/returned\s+[45]\d\d/.test(msg)) {
|
|
22367
|
+
let detail = msg;
|
|
22368
|
+
const jsonStart = msg.indexOf("{");
|
|
22369
|
+
if (jsonStart !== -1) {
|
|
22370
|
+
try {
|
|
22371
|
+
const parsedErr = JSON.parse(msg.slice(jsonStart));
|
|
22372
|
+
if (parsedErr.error) detail = parsedErr.error;
|
|
22373
|
+
} catch {
|
|
22374
|
+
}
|
|
22375
|
+
}
|
|
22376
|
+
return {
|
|
22377
|
+
content: [{ type: "text", text: `Form request rejected: ${detail}` }],
|
|
22378
|
+
isError: true
|
|
22379
|
+
};
|
|
22380
|
+
}
|
|
22381
|
+
return {
|
|
22382
|
+
content: [
|
|
22383
|
+
{ type: "text", text: `Could not reach the form service (${msg}). Tell your operator.` }
|
|
22384
|
+
],
|
|
22385
|
+
isError: true
|
|
22386
|
+
};
|
|
22387
|
+
}
|
|
22388
|
+
const { text, isError } = describeFormRequestResult(resp);
|
|
22389
|
+
return { content: [{ type: "text", text }], ...isError ? { isError: true } : {} };
|
|
22390
|
+
}
|
|
22391
|
+
);
|
|
22305
22392
|
server.tool(
|
|
22306
22393
|
"drift_report",
|
|
22307
22394
|
"Report configuration drift detected in local agent files (CHARTER.md, TOOLS.md, etc.). Compares local file hashes against API-side versions and reports any differences.",
|
|
@@ -23221,7 +23308,10 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
23221
23308
|
"update_identity",
|
|
23222
23309
|
// ENG-6689: request Slack channel posting access (HITL approval to Manager).
|
|
23223
23310
|
// Always registered; listed here to keep the lockstep guard green.
|
|
23224
|
-
"request_channel_access"
|
|
23311
|
+
"request_channel_access",
|
|
23312
|
+
// ENG-7041 (ADR-0034): author + post a structured Slack form, await the typed
|
|
23313
|
+
// answer via direct-chat. Always registered; no API tool shares this name.
|
|
23314
|
+
"request_form"
|
|
23225
23315
|
]);
|
|
23226
23316
|
async function registerForwardedApiTools() {
|
|
23227
23317
|
const apiTools = await discoverApiTools();
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
writeDirectChatSessionState,
|
|
35
35
|
writeEgressAllowlist,
|
|
36
36
|
writePersistentClaudeWrapper
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-4LMNQ2V7.js";
|
|
38
|
+
import "./chunk-ODMNVKDO.js";
|
|
39
39
|
import "./chunk-XWVM4KPK.js";
|
|
40
40
|
export {
|
|
41
41
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
writeEgressAllowlist,
|
|
75
75
|
writePersistentClaudeWrapper
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=persistent-session-
|
|
77
|
+
//# sourceMappingURL=persistent-session-OBWYOJP7.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-4LMNQ2V7.js";
|
|
4
|
+
import "./chunk-ODMNVKDO.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -304,4 +304,4 @@ export {
|
|
|
304
304
|
readAndResetChannelDeflections,
|
|
305
305
|
readAndResetChannelLaneClassifications
|
|
306
306
|
};
|
|
307
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
307
|
+
//# sourceMappingURL=responsiveness-probe-6AKUEVIG.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@integrity-labs/agt-cli",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.178",
|
|
4
4
|
"description": "Augmented Team CLI — agent provisioning and management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsup && npm run build:mcp-assets && npm run build:cli-assets",
|
|
26
|
-
"build:mcp-assets": "mkdir -p dist/mcp && cp ../../packages/mcp/dist/index.js dist/mcp/index.js && cp ../../packages/mcp/dist/slack-channel.js dist/mcp/slack-channel.js && cp ../../packages/mcp/dist/direct-chat-channel.js dist/mcp/direct-chat-channel.js && cp ../../packages/mcp/dist/telegram-channel.js dist/mcp/telegram-channel.js && cp ../../packages/mcp/dist/teams-channel.js dist/mcp/teams-channel.js && cp ../../packages/mcp/dist/whatsapp-channel.js dist/mcp/whatsapp-channel.js && cp ../../packages/mcp/dist/whatsapp-link.js dist/mcp/whatsapp-link.js && cp ../../packages/mcp/dist/remote-oauth-proxy.js dist/mcp/remote-oauth-proxy.js && cp ../../packages/augmented-admin-mcp/dist/index.js dist/mcp/augmented-admin.js",
|
|
26
|
+
"build:mcp-assets": "mkdir -p dist/mcp && cp ../../packages/mcp/dist/index.js dist/mcp/index.js && cp ../../packages/mcp/dist/slack-channel.js dist/mcp/slack-channel.js && cp ../../packages/mcp/dist/direct-chat-channel.js dist/mcp/direct-chat-channel.js && cp ../../packages/mcp/dist/telegram-channel.js dist/mcp/telegram-channel.js && cp ../../packages/mcp/dist/teams-channel.js dist/mcp/teams-channel.js && cp ../../packages/mcp/dist/whatsapp-channel.js dist/mcp/whatsapp-channel.js && cp ../../packages/mcp/dist/whatsapp-link.js dist/mcp/whatsapp-link.js && cp ../../packages/mcp/dist/remote-oauth-proxy.js dist/mcp/remote-oauth-proxy.js && cp ../../packages/augmented-admin-mcp/dist/index.js dist/mcp/augmented-admin.js && cp ../../packages/augmented-support-mcp/dist/index.js dist/mcp/augmented-support.js",
|
|
27
27
|
"build:cli-assets": "mkdir -p dist/assets && cp assets/impersonate-statusline.sh dist/assets/impersonate-statusline.sh && chmod +x dist/assets/impersonate-statusline.sh",
|
|
28
28
|
"dev": "tsx watch src/bin/agt.ts",
|
|
29
29
|
"test": "vitest run",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"@augmented/core": "workspace:*",
|
|
54
54
|
"@integrity-labs/augmented-mcp": "workspace:*",
|
|
55
55
|
"@integrity-labs/augmented-admin-mcp": "workspace:*",
|
|
56
|
+
"@integrity-labs/augmented-support-mcp": "workspace:*",
|
|
56
57
|
"@types/node": "22.19.11",
|
|
57
58
|
"@types/react": "19.2.14",
|
|
58
59
|
"@types/ws": "8.18.1",
|