@agentknight/sdk 0.9.42 → 0.9.43

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.
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  latestPreviewItems
3
- } from "./chunk-RBULXS7T.js";
3
+ } from "./chunk-DB3EAMYS.js";
4
4
  import {
5
5
  UnsupportedAgentOperationError
6
- } from "./chunk-LQIW4ARE.js";
6
+ } from "./chunk-ULM5KUJ7.js";
7
7
  import {
8
8
  ConversationItemSchema,
9
9
  PromptImageAttachmentSchema,
10
10
  SESSION_TIMELINE_PAGE_SIZE,
11
11
  SessionSummarySchema
12
- } from "./chunk-QTBB2U7G.js";
12
+ } from "./chunk-7QOBDG6R.js";
13
13
 
14
14
  // src/acp-adapter.ts
15
15
  import { spawn } from "node:child_process";
@@ -1770,6 +1770,9 @@ var SESSION_FILE_MAX_RESPONSE_BYTES = SESSION_FILE_MAX_BASE64_LENGTH + 8192;
1770
1770
  var SESSION_FILE_V2_MAX_TRANSFER_BYTES = SESSION_FILE_V2_MAX_ORIGINAL_BYTES + 1024;
1771
1771
  var SESSION_FILE_V2_MAX_BASE64_LENGTH = Math.ceil(SESSION_FILE_V2_MAX_TRANSFER_BYTES / 3) * 4;
1772
1772
  var SESSION_FILE_V2_MAX_RESPONSE_BYTES = SESSION_FILE_V2_MAX_BASE64_LENGTH + 8192;
1773
+ var SESSION_FILE_DOWNLOAD_OPERATION = "session.file.download";
1774
+ var SESSION_FILE_DOWNLOAD_VERSION = 1;
1775
+ var SESSION_FILE_DOWNLOAD_MAX_ORIGINAL_BYTES = SESSION_FILE_V2_MAX_ORIGINAL_BYTES;
1773
1776
  var SESSION_FILE_MEDIA_TYPES = [
1774
1777
  "text/plain",
1775
1778
  "text/html",
@@ -1851,6 +1854,8 @@ function fileResultSchema(mediaTypes, extended) {
1851
1854
  }
1852
1855
  var SessionFileReadResultDataSchema = fileResultSchema(SESSION_FILE_MEDIA_TYPES, false);
1853
1856
  var SessionFileReadV2ResultDataSchema = fileResultSchema(SESSION_FILE_V2_MEDIA_TYPES, true);
1857
+ var SessionFileDownloadDataSchema = SessionFileReadDataSchema;
1858
+ var SessionFileDownloadResultDataSchema = fileResultSchema(["application/octet-stream"], true);
1854
1859
  var SessionGitProjectSchema = z18.object({
1855
1860
  localRepositoryKey: z18.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
1856
1861
  worktreeRoot: z18.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
@@ -2576,6 +2581,8 @@ var AndroidProtocolSchemas = {
2576
2581
  SessionFileReadData: SessionFileReadDataSchema,
2577
2582
  SessionFileReadResultData: SessionFileReadResultDataSchema,
2578
2583
  SessionFileReadV2ResultData: SessionFileReadV2ResultDataSchema,
2584
+ SessionFileDownloadData: SessionFileDownloadDataSchema,
2585
+ SessionFileDownloadResultData: SessionFileDownloadResultDataSchema,
2579
2586
  SessionResourceReadData: SessionResourceReadDataSchema,
2580
2587
  SessionResourceReadResultData: SessionResourceReadResultDataSchema,
2581
2588
  SessionDirectoryListRequest: SessionDirectoryListRequestSchema,
@@ -2708,6 +2715,9 @@ export {
2708
2715
  SESSION_FILE_MAX_IMAGE_BYTES,
2709
2716
  SESSION_FILE_MAX_IMAGE_EDGE,
2710
2717
  SESSION_FILE_MAX_IMAGE_PIXELS,
2718
+ SESSION_FILE_DOWNLOAD_OPERATION,
2719
+ SESSION_FILE_DOWNLOAD_VERSION,
2720
+ SESSION_FILE_DOWNLOAD_MAX_ORIGINAL_BYTES,
2711
2721
  SESSION_FILE_MAX_VIDEO_PIXELS,
2712
2722
  isSafeSessionDirectoryPath,
2713
2723
  SessionDirectoryListDataSchema,
@@ -2715,6 +2725,8 @@ export {
2715
2725
  SessionFileReadDataSchema,
2716
2726
  SessionFileReadResultDataSchema,
2717
2727
  SessionFileReadV2ResultDataSchema,
2728
+ SessionFileDownloadDataSchema,
2729
+ SessionFileDownloadResultDataSchema,
2718
2730
  SessionGitProjectSchema,
2719
2731
  SessionProjectIdentityRequestDataSchema,
2720
2732
  SessionProjectIdentityResultDataSchema,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  AgentSessionRenameError,
3
3
  validateSessionName
4
- } from "./chunk-LQIW4ARE.js";
4
+ } from "./chunk-ULM5KUJ7.js";
5
5
  import {
6
6
  ConversationItemSchema,
7
7
  GroupChatInfoSchema,
8
8
  GroupChatParticipantSchema,
9
9
  SESSION_TIMELINE_PAGE_SIZE,
10
10
  SessionSummarySchema
11
- } from "./chunk-QTBB2U7G.js";
11
+ } from "./chunk-7QOBDG6R.js";
12
12
 
13
13
  // src/group-chat.ts
14
14
  import { createHash, randomUUID } from "node:crypto";
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  isContentfulAssistant
3
- } from "./chunk-RBULXS7T.js";
3
+ } from "./chunk-DB3EAMYS.js";
4
4
  import {
5
5
  SessionOperationError
6
- } from "./chunk-LQIW4ARE.js";
6
+ } from "./chunk-ULM5KUJ7.js";
7
7
  import {
8
8
  CONVERSATION_SOURCE_ID_LIMIT,
9
9
  SESSION_DIRECTORY_LIST_OPERATION,
10
+ SESSION_FILE_DOWNLOAD_OPERATION,
10
11
  SESSION_FILE_READ_OPERATION,
11
12
  SESSION_PROJECT_IDENTITY_OPERATION,
12
13
  SESSION_RESOURCE_READ_OPERATION,
@@ -22,7 +23,7 @@ import {
22
23
  WorkbenchInsightsSchema,
23
24
  WorkbenchQueueMutationResultSchema,
24
25
  WorkbenchQueueSnapshotSchema
25
- } from "./chunk-QTBB2U7G.js";
26
+ } from "./chunk-7QOBDG6R.js";
26
27
 
27
28
  // src/operation-diagnostics.ts
28
29
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -103,6 +104,7 @@ var operations = /* @__PURE__ */ new Set([
103
104
  TIMELINE_IMAGE_OPERATION,
104
105
  SESSION_DIRECTORY_LIST_OPERATION,
105
106
  SESSION_FILE_READ_OPERATION,
107
+ SESSION_FILE_DOWNLOAD_OPERATION,
106
108
  SESSION_PROJECT_IDENTITY_OPERATION,
107
109
  SESSION_RESOURCE_READ_OPERATION,
108
110
  ...WORKBENCH_OPERATIONS
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SessionAssistantPreviewSchema,
3
3
  SessionUserPreviewSchema
4
- } from "./chunk-QTBB2U7G.js";
4
+ } from "./chunk-7QOBDG6R.js";
5
5
 
6
6
  // src/assistant-preview.ts
7
7
  function isContentfulAssistant(item) {
@@ -0,0 +1,55 @@
1
+ // src/local-agent-discovery.ts
2
+ import { constants } from "node:fs";
3
+ import { access, stat } from "node:fs/promises";
4
+ import { homedir } from "node:os";
5
+ import { delimiter, isAbsolute, join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ async function accessible(path, executable = false) {
8
+ try {
9
+ await access(path, executable && process.platform !== "win32" ? constants.X_OK : constants.F_OK);
10
+ return (await stat(path)).isFile();
11
+ } catch (error) {
12
+ if (error instanceof Error && "code" in error && (error.code === "ENOENT" || error.code === "ENOTDIR")) return false;
13
+ throw error;
14
+ }
15
+ }
16
+ async function hasLocalExecutable(command, environment = process.env) {
17
+ const extensions = process.platform === "win32" ? ["", ...(environment.PATHEXT ?? ".EXE;.CMD;.BAT").split(";")] : [""];
18
+ const paths = isAbsolute(command) || command.includes("/") || command.includes("\\") ? [command] : (environment.PATH ?? "").split(delimiter).filter(Boolean).map((directory) => join(directory, command));
19
+ for (const path of paths) {
20
+ for (const extension of extensions) {
21
+ if (await accessible(`${path}${extension}`, true)) return true;
22
+ }
23
+ }
24
+ return false;
25
+ }
26
+ async function hasPackage(name) {
27
+ try {
28
+ return await accessible(fileURLToPath(import.meta.resolve(name)));
29
+ } catch (error) {
30
+ if (error instanceof Error && "code" in error && error.code === "ERR_MODULE_NOT_FOUND") return false;
31
+ throw error;
32
+ }
33
+ }
34
+ async function detectCopilot() {
35
+ return process.env.COPILOT_CLI_PATH ? accessible(process.env.COPILOT_CLI_PATH) : await hasPackage("@github/copilot/npm-loader.js") || hasLocalExecutable("copilot");
36
+ }
37
+ async function detectPi(agentDirectory) {
38
+ if (!await hasPackage("@earendil-works/pi-coding-agent")) return false;
39
+ const directory = agentDirectory ?? (process.env.PI_CODING_AGENT_DIR || join(homedir(), ".pi", "agent"));
40
+ return agentDirectory !== void 0 || await accessible(join(directory, "auth.json")) || await hasLocalExecutable("pi");
41
+ }
42
+ function hasClaudeProviderConfiguration(environment = process.env) {
43
+ return Boolean(environment.ANTHROPIC_API_KEY?.trim()) || ["CLAUDE_CODE_USE_BEDROCK", "CLAUDE_CODE_USE_VERTEX", "CLAUDE_CODE_USE_FOUNDRY"].some((key) => environment[key] === "1");
44
+ }
45
+ async function detectClaude() {
46
+ return hasClaudeProviderConfiguration() && await hasPackage("@anthropic-ai/claude-agent-sdk");
47
+ }
48
+
49
+ export {
50
+ hasLocalExecutable,
51
+ detectCopilot,
52
+ detectPi,
53
+ hasClaudeProviderConfiguration,
54
+ detectClaude
55
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  IdSchema
3
- } from "./chunk-QTBB2U7G.js";
3
+ } from "./chunk-7QOBDG6R.js";
4
4
 
5
5
  // src/data-directory.ts
6
6
  import { randomUUID } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SessionOperationError
3
- } from "./chunk-LQIW4ARE.js";
3
+ } from "./chunk-ULM5KUJ7.js";
4
4
 
5
5
  // src/adapters/copilot/runtime/session-identity.ts
6
6
  function assertMainSessionId(sessionId) {
@@ -3,7 +3,7 @@ import {
3
3
  SessionCommunicationDataSchema,
4
4
  SessionNameSchema,
5
5
  WorkbenchOperationStatusSchema
6
- } from "./chunk-QTBB2U7G.js";
6
+ } from "./chunk-7QOBDG6R.js";
7
7
 
8
8
  // src/session-operations.ts
9
9
  import { createHash, randomUUID } from "node:crypto";
@@ -278,6 +278,7 @@ var SessionOperations = class {
278
278
  };
279
279
 
280
280
  // src/coding-agent-adapter.ts
281
+ var CODING_AGENT_IDS = ["copilot", "pi", "codex", "claude", "acp"];
281
282
  var TimelinePageBudgetError = class extends Error {
282
283
  };
283
284
  var AgentModelListingError = class extends AggregateError {
@@ -333,6 +334,7 @@ function validateSessionName(name) {
333
334
  export {
334
335
  SessionOperationError,
335
336
  SessionOperations,
337
+ CODING_AGENT_IDS,
336
338
  TimelinePageBudgetError,
337
339
  AgentModelListingError,
338
340
  captureResearchAccess,
@@ -1,11 +1,14 @@
1
+ import {
2
+ CODING_AGENT_IDS
3
+ } from "./chunk-ULM5KUJ7.js";
1
4
  import {
2
5
  SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH
3
- } from "./chunk-QTBB2U7G.js";
6
+ } from "./chunk-7QOBDG6R.js";
4
7
 
5
8
  // src/agent-selection.ts
6
9
  import { z } from "zod";
7
10
  var AgentSelectionSchema = z.object({
8
- agents: z.array(z.enum(["copilot", "pi", "acp"])).max(3).refine((agents) => new Set(agents).size === agents.length, "Duplicate managed agent selection")
11
+ agents: z.array(z.enum(CODING_AGENT_IDS)).max(CODING_AGENT_IDS.length).refine((agents) => new Set(agents).size === agents.length, "Duplicate managed agent selection")
9
12
  }).strict();
10
13
  function assertSelectionSnapshotFits(sessions) {
11
14
  const bytes = Buffer.byteLength(JSON.stringify(sessions), "utf8") + 4096;