@integrity-labs/agt-cli 0.27.34 → 0.27.36

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.
@@ -9,7 +9,7 @@ import {
9
9
  parseDeliveryTarget,
10
10
  registerFramework,
11
11
  wrapScheduledTaskPrompt
12
- } from "./chunk-NZWPRYJO.js";
12
+ } from "./chunk-GVM2KJOA.js";
13
13
 
14
14
  // ../../packages/core/dist/integrations/registry.js
15
15
  var INTEGRATION_REGISTRY = [
@@ -7031,4 +7031,4 @@ export {
7031
7031
  managerInstallSystemUnitCommand,
7032
7032
  managerUninstallSystemUnitCommand
7033
7033
  };
7034
- //# sourceMappingURL=chunk-YC4QZFI4.js.map
7034
+ //# sourceMappingURL=chunk-LASXZZS6.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  claudeModelAlias,
3
3
  isClaudeFastMode
4
- } from "./chunk-NZWPRYJO.js";
4
+ } from "./chunk-GVM2KJOA.js";
5
5
  import {
6
6
  reapOrphanChannelMcps
7
7
  } from "./chunk-XWVM4KPK.js";
@@ -1125,4 +1125,4 @@ export {
1125
1125
  stopAllSessionsAndWait,
1126
1126
  getProjectDir
1127
1127
  };
1128
- //# sourceMappingURL=chunk-MV4WLCUO.js.map
1128
+ //# sourceMappingURL=chunk-SG5AM6BO.js.map
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
100
100
  return { ok: true };
101
101
  } catch {
102
102
  }
103
- const { resolveClaudeBinary } = await import("./persistent-session-ZJDQHJL3.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-3NLFD7X7.js");
104
104
  const claudeBin = resolveClaudeBinary();
105
105
  const pairEnv = {
106
106
  ...process.env,
@@ -373,4 +373,4 @@ export {
373
373
  startClaudePair,
374
374
  submitClaudePairCode
375
375
  };
376
- //# sourceMappingURL=claude-pair-runtime-JRG2D5KQ.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-65NGNJ37.js.map
@@ -15,7 +15,7 @@ import {
15
15
  provisionOrientHook,
16
16
  provisionStopHook,
17
17
  requireHost
18
- } from "../chunk-YC4QZFI4.js";
18
+ } from "../chunk-LASXZZS6.js";
19
19
  import {
20
20
  getProjectDir as getProjectDir2,
21
21
  getReadyTasks,
@@ -46,7 +46,7 @@ import {
46
46
  stopAllSessionsAndWait,
47
47
  stopPersistentSession,
48
48
  takeZombieDetection
49
- } from "../chunk-MV4WLCUO.js";
49
+ } from "../chunk-SG5AM6BO.js";
50
50
  import {
51
51
  KANBAN_CHECK_COMMAND,
52
52
  appendDmFooter,
@@ -69,7 +69,7 @@ import {
69
69
  resolveConnectivityProbe,
70
70
  resolveDmTarget,
71
71
  wrapScheduledTaskPrompt
72
- } from "../chunk-NZWPRYJO.js";
72
+ } from "../chunk-GVM2KJOA.js";
73
73
  import {
74
74
  parsePsRows,
75
75
  reapOrphanChannelMcps
@@ -3344,7 +3344,7 @@ var cachedFrameworkVersion = null;
3344
3344
  var lastVersionCheckAt = 0;
3345
3345
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
3346
3346
  var lastResponsivenessProbeAt = 0;
3347
- var agtCliVersion = true ? "0.27.34" : "dev";
3347
+ var agtCliVersion = true ? "0.27.36" : "dev";
3348
3348
  function resolveBrewPath(execFileSync4) {
3349
3349
  try {
3350
3350
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -4395,7 +4395,7 @@ async function pollCycle() {
4395
4395
  }
4396
4396
  try {
4397
4397
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
4398
- const { collectDiagnostics } = await import("../persistent-session-ZJDQHJL3.js");
4398
+ const { collectDiagnostics } = await import("../persistent-session-3NLFD7X7.js");
4399
4399
  const diagCodeNames = [...agentState.persistentSessionAgents];
4400
4400
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
4401
4401
  let tailscaleHostname;
@@ -4463,7 +4463,7 @@ async function pollCycle() {
4463
4463
  const {
4464
4464
  collectResponsivenessProbes,
4465
4465
  getResponsivenessIntervalMs
4466
- } = await import("../responsiveness-probe-XQFRB2DB.js");
4466
+ } = await import("../responsiveness-probe-ZJACUTGA.js");
4467
4467
  const probeIntervalMs = getResponsivenessIntervalMs();
4468
4468
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
4469
4469
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8508,7 +8508,7 @@ async function processClaudePairSessions(agents) {
8508
8508
  killPairSession,
8509
8509
  pairTmuxSession,
8510
8510
  finalizeClaudePairOnboarding
8511
- } = await import("../claude-pair-runtime-JRG2D5KQ.js");
8511
+ } = await import("../claude-pair-runtime-65NGNJ37.js");
8512
8512
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
8513
8513
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
8514
8514
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -22317,9 +22317,13 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
22317
22317
  "dashboards_request_refresh",
22318
22318
  "dashboards_pending_refreshes",
22319
22319
  "dashboards_persist_widget",
22320
+ "artefacts_list",
22321
+ "artefacts_get",
22322
+ "artefacts_get_source_chunk",
22323
+ // ADR-0017 Projects container (the reclaimed projects_* namespace — read-only
22324
+ // in v1; no projects_get_source_chunk, a project is a container not a document).
22320
22325
  "projects_list",
22321
- "projects_get",
22322
- "projects_get_source_chunk"
22326
+ "projects_get"
22323
22327
  ]);
22324
22328
  async function registerForwardedApiTools() {
22325
22329
  const apiTools = await discoverApiTools();
@@ -22353,76 +22357,135 @@ async function registerForwardedApiTools() {
22353
22357
  }
22354
22358
  return { registered, skipped };
22355
22359
  }
22356
- server.tool(
22357
- "projects_list",
22358
- "List artefacts (websites, slide decks, mockups) this agent has previously published. Call this BEFORE re-publishing to find and modify existing work instead of creating duplicates.",
22359
- {
22360
- publisher: external_exports.string().optional().describe('Filter by publisher (e.g. "here-now")'),
22361
- kind: external_exports.enum(["mockup", "deck", "site", "app", "other"]).optional().describe("Filter by artefact kind"),
22362
- limit: external_exports.number().int().min(1).max(100).optional().describe("Maximum projects to return (default 50, max 100)")
22363
- },
22364
- async (params) => {
22365
- const data = await apiPost("/host/my-published-projects", {
22360
+ async function listPublishedArtefactsText(params) {
22361
+ const data = await apiPost(
22362
+ "/host/my-published-artefacts",
22363
+ {
22366
22364
  agent_id: AGT_AGENT_ID,
22367
22365
  publisher: params.publisher,
22368
22366
  kind: params.kind,
22369
22367
  limit: params.limit
22370
- });
22371
- if (!data.projects.length) {
22372
- return { content: [{ type: "text", text: "No published projects yet." }] };
22373
22368
  }
22374
- const lines = data.projects.map((p) => {
22375
- const title = p.title ?? "(untitled)";
22376
- const expires = p.expires_at ? ` expires ${p.expires_at}` : "";
22377
- return `- [${p.kind}] ${title} \u2014 ${p.live_url} (id: ${p.id}, ${p.mode}, published ${p.published_at}${expires})`;
22378
- });
22379
- return { content: [{ type: "text", text: lines.join("\n") }] };
22380
- }
22369
+ );
22370
+ if (!data.artefacts.length) {
22371
+ return "No published artefacts yet.";
22372
+ }
22373
+ return data.artefacts.map((p) => {
22374
+ const title = p.title ?? "(untitled)";
22375
+ const expires = p.expires_at ? ` expires ${p.expires_at}` : "";
22376
+ return `- [${p.kind}] ${title} \u2014 ${p.live_url} (id: ${p.id}, ${p.mode}, published ${p.published_at}${expires})`;
22377
+ }).join("\n");
22378
+ }
22379
+ async function getPublishedArtefactText(artefactId) {
22380
+ const data = await apiPost(`/host/published-artefact/${encodeURIComponent(artefactId)}`, {
22381
+ agent_id: AGT_AGENT_ID
22382
+ });
22383
+ const p = data.artefact;
22384
+ return [
22385
+ `Artefact: ${p.title ?? "(untitled)"} [${p.kind}]`,
22386
+ `Publisher: ${p.publisher} (${p.mode})`,
22387
+ `Live URL: ${p.live_url}`,
22388
+ p.claim_url ? `Claim URL: ${p.claim_url}` : null,
22389
+ `Published: ${p.published_at}`,
22390
+ p.expires_at ? `Expires: ${p.expires_at}` : null,
22391
+ `Last modified: ${p.last_modified_at}`,
22392
+ p.has_source_html ? `Source HTML: ${p.source_html_length} bytes (call artefacts_get_source_chunk to fetch)` : "(source HTML not preserved for this artefact)"
22393
+ ].filter((s) => s !== null).join("\n");
22394
+ }
22395
+ async function getPublishedArtefactSourceChunkText(artefactId, offset, limit) {
22396
+ const data = await apiPost(`/host/published-artefact/${encodeURIComponent(artefactId)}/source-chunk`, {
22397
+ agent_id: AGT_AGENT_ID,
22398
+ offset,
22399
+ limit
22400
+ });
22401
+ const trailer = data.end_of_content ? "\n\n---\n(end of source)" : `
22402
+
22403
+ ---
22404
+ (more \u2014 next offset: ${data.offset + data.length}, total: ${data.total_length} bytes)`;
22405
+ return data.chunk + trailer;
22406
+ }
22407
+ var artefactListSchema = {
22408
+ publisher: external_exports.string().optional().describe('Filter by publisher (e.g. "here-now")'),
22409
+ kind: external_exports.enum(["mockup", "deck", "site", "app", "other"]).optional().describe("Filter by artefact kind"),
22410
+ limit: external_exports.number().int().min(1).max(100).optional().describe("Maximum artefacts to return (default 50, max 100)")
22411
+ };
22412
+ server.tool(
22413
+ "artefacts_list",
22414
+ "List artefacts (websites, slide decks, mockups) this agent has previously published. Call this BEFORE re-publishing to find and modify existing work instead of creating duplicates.",
22415
+ artefactListSchema,
22416
+ async (params) => ({
22417
+ content: [{ type: "text", text: await listPublishedArtefactsText(params) }]
22418
+ })
22381
22419
  );
22382
22420
  server.tool(
22383
- "projects_get",
22384
- "Fetch metadata for a single published project. Returns the project record without the source HTML \u2014 call projects_get_source_chunk to retrieve the HTML in chunks when you need to modify it.",
22421
+ "artefacts_get",
22422
+ "Fetch metadata for a single published artefact. Returns the artefact record without the source HTML \u2014 call artefacts_get_source_chunk to retrieve the HTML in chunks when you need to modify it.",
22385
22423
  {
22386
- project_id: external_exports.string().uuid().describe("The project id returned by projects_list")
22424
+ artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list")
22387
22425
  },
22388
- async (params) => {
22389
- const data = await apiPost(`/host/published-project/${encodeURIComponent(params.project_id)}`, {
22390
- agent_id: AGT_AGENT_ID
22391
- });
22392
- const p = data.project;
22393
- const header = [
22394
- `Project: ${p.title ?? "(untitled)"} [${p.kind}]`,
22395
- `Publisher: ${p.publisher} (${p.mode})`,
22396
- `Live URL: ${p.live_url}`,
22397
- p.claim_url ? `Claim URL: ${p.claim_url}` : null,
22398
- `Published: ${p.published_at}`,
22399
- p.expires_at ? `Expires: ${p.expires_at}` : null,
22400
- `Last modified: ${p.last_modified_at}`,
22401
- p.has_source_html ? `Source HTML: ${p.source_html_length} bytes (call projects_get_source_chunk to fetch)` : "(source HTML not preserved for this project)"
22402
- ].filter((s) => s !== null).join("\n");
22403
- return { content: [{ type: "text", text: header }] };
22404
- }
22426
+ async (params) => ({
22427
+ content: [{ type: "text", text: await getPublishedArtefactText(params.artefact_id) }]
22428
+ })
22405
22429
  );
22406
22430
  server.tool(
22407
- "projects_get_source_chunk",
22408
- "Fetch a chunk of source HTML for a published project. Use this to assemble the HTML for modification when projects_get reports a non-zero source_html_length.",
22431
+ "artefacts_get_source_chunk",
22432
+ "Fetch a chunk of source HTML for a published artefact. Use this to assemble the HTML for modification when artefacts_get reports a non-zero source_html_length.",
22409
22433
  {
22410
- project_id: external_exports.string().uuid().describe("The project id returned by projects_list"),
22434
+ artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list"),
22411
22435
  offset: external_exports.number().int().min(0).describe("Byte offset into the source HTML to start from"),
22412
22436
  limit: external_exports.number().int().min(1).max(65536).optional().describe("Max bytes to return (default 32KB, max 64KB)")
22413
22437
  },
22414
- async (params) => {
22415
- const data = await apiPost(`/host/published-project/${encodeURIComponent(params.project_id)}/source-chunk`, {
22416
- agent_id: AGT_AGENT_ID,
22417
- offset: params.offset,
22418
- limit: params.limit
22419
- });
22420
- const trailer = data.end_of_content ? "\n\n---\n(end of source)" : `
22421
-
22422
- ---
22423
- (more \u2014 next offset: ${data.offset + data.length}, total: ${data.total_length} bytes)`;
22424
- return { content: [{ type: "text", text: data.chunk + trailer }] };
22438
+ async (params) => ({
22439
+ content: [
22440
+ { type: "text", text: await getPublishedArtefactSourceChunkText(params.artefact_id, params.offset, params.limit) }
22441
+ ]
22442
+ })
22443
+ );
22444
+ async function listProjectsText(params) {
22445
+ const data = await apiPost("/host/my-projects", {
22446
+ agent_id: AGT_AGENT_ID,
22447
+ status: params.status,
22448
+ limit: params.limit
22449
+ });
22450
+ if (!data.projects.length) {
22451
+ return "No projects yet. Projects are created by a human in the console; ask one to create a project to group your work under.";
22425
22452
  }
22453
+ return data.projects.map((p) => `- ${p.name} [${p.status}] (id: ${p.id}, created ${p.created_at})`).join("\n");
22454
+ }
22455
+ async function getProjectText(projectId) {
22456
+ const data = await apiPost(
22457
+ `/host/project/${encodeURIComponent(projectId)}`,
22458
+ { agent_id: AGT_AGENT_ID }
22459
+ );
22460
+ const p = data.project;
22461
+ return [
22462
+ `Project: ${p.name} [${p.status}]`,
22463
+ `Id: ${p.id}`,
22464
+ p.linear_project_id ? `Linear project: ${p.linear_project_id}` : null,
22465
+ `Created: ${p.created_at}`,
22466
+ `Last updated: ${p.updated_at}`
22467
+ ].filter((s) => s !== null).join("\n");
22468
+ }
22469
+ server.tool(
22470
+ "projects_list",
22471
+ "List the projects belonging to this agent's team. A project is a container that groups related tasks and published artefacts across agents under one unit of work. Read-only: projects are created by humans in the console.",
22472
+ {
22473
+ status: external_exports.enum(["active", "archived"]).optional().describe("Filter by project status"),
22474
+ limit: external_exports.number().int().min(1).max(100).optional().describe("Maximum projects to return (default 50, max 100)")
22475
+ },
22476
+ async (params) => ({
22477
+ content: [{ type: "text", text: await listProjectsText(params) }]
22478
+ })
22479
+ );
22480
+ server.tool(
22481
+ "projects_get",
22482
+ "Fetch a single project (a team-scoped container) by id, including its name, status, and optional Linear link.",
22483
+ {
22484
+ project_id: external_exports.string().uuid().describe("The project id returned by projects_list")
22485
+ },
22486
+ async (params) => ({
22487
+ content: [{ type: "text", text: await getProjectText(params.project_id) }]
22488
+ })
22426
22489
  );
22427
22490
  async function main() {
22428
22491
  try {
@@ -21,8 +21,8 @@ import {
21
21
  stopPersistentSession,
22
22
  takeZombieDetection,
23
23
  writePersistentClaudeWrapper
24
- } from "./chunk-MV4WLCUO.js";
25
- import "./chunk-NZWPRYJO.js";
24
+ } from "./chunk-SG5AM6BO.js";
25
+ import "./chunk-GVM2KJOA.js";
26
26
  import "./chunk-XWVM4KPK.js";
27
27
  export {
28
28
  SEND_KEYS_ENTER_DELAY_MS,
@@ -48,4 +48,4 @@ export {
48
48
  takeZombieDetection,
49
49
  writePersistentClaudeWrapper
50
50
  };
51
- //# sourceMappingURL=persistent-session-ZJDQHJL3.js.map
51
+ //# sourceMappingURL=persistent-session-3NLFD7X7.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-MV4WLCUO.js";
4
- import "./chunk-NZWPRYJO.js";
3
+ } from "./chunk-SG5AM6BO.js";
4
+ import "./chunk-GVM2KJOA.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -30,4 +30,4 @@ export {
30
30
  collectResponsivenessProbes,
31
31
  getResponsivenessIntervalMs
32
32
  };
33
- //# sourceMappingURL=responsiveness-probe-XQFRB2DB.js.map
33
+ //# sourceMappingURL=responsiveness-probe-ZJACUTGA.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.27.34",
3
+ "version": "0.27.36",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {