@copado/agentia-cli 1.0.0-beta.2 → 1.0.0-beta.4

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +384 -282
  3. package/dist/commands/cicd/data/template/save-detail.js +2 -2
  4. package/dist/commands/cicd/repository/auth/https/configure.js +21 -0
  5. package/dist/commands/cicd/repository/auth/oauth/login.js +56 -0
  6. package/dist/commands/cicd/repository/auth/setup.js +28 -0
  7. package/dist/commands/cicd/repository/auth/ssh/configure.js +22 -0
  8. package/dist/commands/cicd/repository/create.js +2 -2
  9. package/dist/commands/cicd/repository/reset.js +17 -5
  10. package/dist/commands/cicd/repository/update.js +6 -14
  11. package/dist/commands/cicd/work/environment-sync.js +66 -61
  12. package/dist/commands/cicd/work/get.js +5 -9
  13. package/dist/commands/cicd/work/submit.js +1 -1
  14. package/dist/commands/runtime.js +26 -0
  15. package/dist/hooks/finally/ide-command-event.js +1 -1
  16. package/dist/hooks/init/plugin-host.js +6 -0
  17. package/dist/lib/agentia-command.js +16 -0
  18. package/dist/lib/cursor-mcp-config.js +3 -1
  19. package/dist/lib/data-types.js +3 -1
  20. package/dist/lib/git-worktree.js +2 -1
  21. package/dist/lib/mcp/data-tools.js +2 -2
  22. package/dist/lib/mcp/server.js +33 -7
  23. package/dist/lib/mcp/tool-annotations.js +3 -0
  24. package/dist/lib/mcp/tools.js +55 -12
  25. package/dist/lib/mcp/work-tools.js +3 -6
  26. package/dist/lib/plugin-host/auth.js +4 -0
  27. package/dist/lib/plugin-host/format.js +3 -0
  28. package/dist/lib/plugin-host/index.js +7 -0
  29. package/dist/lib/plugin-host/organization.js +4 -0
  30. package/dist/lib/plugin-host/projection-utils.js +6 -0
  31. package/dist/lib/plugin-host/registry.js +6 -0
  32. package/dist/lib/plugin-host/request-scope.js +4 -0
  33. package/dist/lib/plugin-host/work.js +4 -0
  34. package/dist/lib/project-root.js +3 -1
  35. package/dist/lib/repository-auth.js +8 -0
  36. package/dist/lib/repository-flags.js +2 -2
  37. package/dist/lib/repository-types.js +6 -1
  38. package/dist/lib/repository-url-prefill.js +4 -0
  39. package/dist/lib/runtime-invoke-context.js +6 -0
  40. package/dist/lib/runtime-rpc.js +14 -0
  41. package/dist/lib/runtime.js +1 -1
  42. package/dist/lib/work-environment-sync.js +1 -2
  43. package/dist/lib/work-get.js +3 -0
  44. package/oclif.manifest.json +244 -126
  45. package/package.json +4 -3
@@ -3,19 +3,19 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
3
3
  import { createRequire } from 'node:module';
4
4
  import process from 'node:process';
5
5
  import { migrateUserSettingsFromProjectConfig } from '../defaults-store.js';
6
- import { applyProjectRoot } from '../project-root.js';
6
+ import { applyProjectRoot, hasExplicitProjectRoot } from '../project-root.js';
7
7
  import { runWithMcpRequestSignal } from './request-context.js';
8
8
  import { runWithMcpToolContext } from './result.js';
9
9
  import { withToolAnnotations } from './tool-annotations.js';
10
10
  import { registerAgentiaMcpTools } from './tools.js';
11
11
  const require = createRequire(import.meta.url);
12
12
  const packageJson = require('../../../package.json');
13
- export function createAgentiaMcpServer(lifecycleSignal) {
13
+ export function createAgentiaMcpServer(lifecycleSignal, projectContextReady = Promise.resolve()) {
14
14
  const server = new McpServer({
15
15
  name: packageJson.name ?? 'agentia-cli',
16
16
  version: packageJson.version,
17
17
  });
18
- wrapMcpToolRegistration(server, lifecycleSignal);
18
+ wrapMcpToolRegistration(server, lifecycleSignal, projectContextReady);
19
19
  registerAgentiaMcpTools(server);
20
20
  return server;
21
21
  }
@@ -42,13 +42,14 @@ function combineSignals(requestSignal, lifecycleSignal) {
42
42
  signal: controller.signal,
43
43
  };
44
44
  }
45
- function wrapMcpToolRegistration(server, lifecycleSignal) {
45
+ function wrapMcpToolRegistration(server, lifecycleSignal, projectContextReady = Promise.resolve()) {
46
46
  const registerTool = server.registerTool.bind(server);
47
47
  server.registerTool = ((name, config, handler) => registerTool(name, withToolAnnotations(name, config), (...args) => {
48
48
  const extra = args.at(-1);
49
49
  const { dispose, signal } = combineSignals(extra?.signal, lifecycleSignal);
50
50
  return runWithMcpRequestSignal(signal, async () => {
51
51
  try {
52
+ await projectContextReady;
52
53
  return await runWithMcpToolContext(name, async () => handler(...args));
53
54
  }
54
55
  finally {
@@ -57,13 +58,38 @@ function wrapMcpToolRegistration(server, lifecycleSignal) {
57
58
  });
58
59
  }));
59
60
  }
60
- export async function startAgentiaMcpServer(transport = new StdioServerTransport()) {
61
- applyProjectRoot();
61
+ function clientSupportsRoots(server) {
62
+ return (server.server._clientCapabilities?.roots !== undefined);
63
+ }
64
+ async function applyMcpProjectRoot(server, includeMcpRoots) {
65
+ const rootUris = includeMcpRoots ? (await server.server.listRoots()).roots.map((root) => root.uri) : undefined;
66
+ applyProjectRoot(undefined, rootUris);
62
67
  await migrateUserSettingsFromProjectConfig().catch(() => {
63
68
  // Best-effort; MCP tools still fall back to reading legacy project keys.
64
69
  });
70
+ }
71
+ export async function startAgentiaMcpServer(transport = new StdioServerTransport()) {
65
72
  const lifecycle = new AbortController();
66
- const server = createAgentiaMcpServer(lifecycle.signal);
73
+ let resolveProjectContext;
74
+ let rejectProjectContext;
75
+ const projectContextReady = new Promise((resolve, reject) => {
76
+ resolveProjectContext = resolve;
77
+ rejectProjectContext = reject;
78
+ });
79
+ projectContextReady.catch((error) => {
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ process.stderr.write(`[agentia-mcp] project context error: ${message}\n`);
82
+ });
83
+ const server = createAgentiaMcpServer(lifecycle.signal, projectContextReady);
84
+ if (hasExplicitProjectRoot()) {
85
+ await applyMcpProjectRoot(server, false);
86
+ resolveProjectContext();
87
+ }
88
+ else {
89
+ server.server.oninitialized = () => {
90
+ applyMcpProjectRoot(server, clientSupportsRoots(server)).then(resolveProjectContext, rejectProjectContext);
91
+ };
92
+ }
67
93
  let closing = false;
68
94
  const close = async () => {
69
95
  if (closing)
@@ -128,6 +128,7 @@ const READ_TOOLS = [
128
128
  'agentia_function_list',
129
129
  'agentia_function_result_get',
130
130
  'agentia_function_result_log_get',
131
+ 'agentia_health_check',
131
132
  'agentia_job_get',
132
133
  'agentia_job_list',
133
134
  'agentia_job_log_get',
@@ -212,6 +213,8 @@ const UPDATE_TOOLS = [
212
213
  'agentia_promotion_conflict_unresolve',
213
214
  'agentia_promotion_job_step_update',
214
215
  'agentia_repository_update',
216
+ 'agentia_repository_auth_https',
217
+ 'agentia_repository_auth_ssh',
215
218
  'agentia_stage_update',
216
219
  'agentia_testing_data_table_update',
217
220
  'agentia_testing_job_schedule_set',
@@ -37,7 +37,7 @@ import { buildPromotionManualTaskUpdatePayload, PROMOTION_MANUAL_TASK_STATUSES,
37
37
  import { performPromotionResume, performPromotionRun, PROMOTION_OPERATIONS, PROMOTION_RUN_DEFAULT_TIMEOUT_SECONDS, } from '../promotion-run.js';
38
38
  import { normalizePromotionDetail, normalizePromotionsListPage, promotionEndpoint, promotionListEndpoint, } from '../promotion-types.js';
39
39
  import { REPOSITORY_STRING_VALIDATION_KEYS, validateNonEmptyStringFields as validateRepositoryNonEmptyStringFields, } from '../repository-flags.js';
40
- import { normalizeRepositoriesListPage, normalizeRepository, normalizeRepositoryValidateResult, repositoriesEndpoint, REPOSITORY_AUTH_TYPES, REPOSITORY_PROVIDERS, REPOSITORY_SOURCE_FORMATS, repositoryEndpoint, repositoryResetEndpoint, repositoryValidateEndpoint, withRequiredRepositoryFields, } from '../repository-types.js';
40
+ import { normalizeRepositoriesListPage, normalizeRepository, normalizeRepositoryValidateResult, repositoriesEndpoint, REPOSITORY_PROVIDERS, REPOSITORY_SOURCE_FORMATS, repositoryEndpoint, repositoryHttpsAuthEndpoint, repositoryResetEndpoint, repositorySshAuthEndpoint, repositoryValidateEndpoint, } from '../repository-types.js';
41
41
  import { buildStageMutationPayload, validateStagePayload } from '../stage-flags.js';
42
42
  import { normalizePipelineStageConnection, normalizeStage, normalizeStagesListPage, pipelineStageConnectionEndpoint, pipelineStageConnectionsEndpoint, STAGE_META_STAGE_SUGGESTIONS, stageEndpoint, stagesEndpoint, } from '../stage-types.js';
43
43
  import { getUserContext } from '../user-context.js';
@@ -561,17 +561,12 @@ async function repositoryUpdate(args) {
561
561
  if (Object.keys(explicitPayload).length === 0) {
562
562
  throw new Error('Must provide at least one field to update.');
563
563
  }
564
- const currentResponse = await CicdGateway.call({
565
- endpoint: repositoryEndpoint(id),
566
- method: 'GET',
567
- });
568
- const payload = withRequiredRepositoryFields(explicitPayload, normalizeRepository(currentResponse));
569
- const validationError = validateRepositoryPayload(payload);
564
+ const validationError = validateRepositoryMutationPayload(explicitPayload);
570
565
  if (validationError !== undefined) {
571
566
  throw new Error(validationError);
572
567
  }
573
568
  const response = await CicdGateway.call({
574
- body: payload,
569
+ body: explicitPayload,
575
570
  endpoint: repositoryEndpoint(id),
576
571
  headers: {
577
572
  'Content-Type': 'application/json',
@@ -580,6 +575,26 @@ async function repositoryUpdate(args) {
580
575
  });
581
576
  return { repository: normalizeRepository(response) };
582
577
  }
578
+ async function repositoryAuthHttps(args) {
579
+ const { id, overwrite, ...payload } = args;
580
+ await CicdGateway.call({
581
+ body: payload,
582
+ endpoint: repositoryHttpsAuthEndpoint(assertRequired(id, 'id'), overwrite === true),
583
+ headers: { 'Content-Type': 'application/json' },
584
+ method: 'PUT',
585
+ });
586
+ return { id };
587
+ }
588
+ async function repositoryAuthSsh(args) {
589
+ const { id, overwrite, ...payload } = args;
590
+ const response = await CicdGateway.call({
591
+ body: payload,
592
+ endpoint: repositorySshAuthEndpoint(assertRequired(id, 'id'), overwrite === true),
593
+ headers: { 'Content-Type': 'application/json' },
594
+ method: 'POST',
595
+ });
596
+ return { id, publicKey: response.publicKey };
597
+ }
583
598
  async function repositoryDelete(args) {
584
599
  const id = assertRequired(args.id, 'id');
585
600
  await CicdGateway.call({
@@ -765,6 +780,9 @@ function validateRepositoryPayload(payload) {
765
780
  }
766
781
  return undefined;
767
782
  }
783
+ function validateRepositoryMutationPayload(payload) {
784
+ return validateRepositoryNonEmptyStringFields(payload, REPOSITORY_STRING_VALIDATION_KEYS);
785
+ }
768
786
  async function userGet(args = {}) {
769
787
  const user = await CicdGateway.call({
770
788
  endpoint: userEndpoint(resolveUserId(args.id)),
@@ -1334,18 +1352,14 @@ const pipelineConnectionMutationSchema = {
1334
1352
  };
1335
1353
  const repositoryMutationSchema = {
1336
1354
  allowFunctionsGitCache: z.boolean().optional().describe('Allow Functions Git cache for this repository.'),
1337
- authType: z.enum(REPOSITORY_AUTH_TYPES).optional().describe('Repository authentication type.'),
1338
1355
  branchBaseUrl: z.string().nullable().optional().describe('Base URL for repository branch links.'),
1339
1356
  commitBaseUrl: z.string().nullable().optional().describe('Base URL for repository commit links.'),
1340
- extraHeaders: z.string().nullable().optional().describe('Additional authentication headers.'),
1341
1357
  isCopadoTunnelEnabled: z.boolean().optional().describe('Enable Copado tunnel for this repository.'),
1342
- password: z.string().nullable().optional().describe('Repository password or token. Sensitive input.'),
1343
1358
  provider: z.enum(REPOSITORY_PROVIDERS).optional().describe('Git repository provider.'),
1344
1359
  pullRequestBaseUrl: z.string().nullable().optional().describe('Base URL for repository pull request links.'),
1345
1360
  sourceFormat: z.enum(REPOSITORY_SOURCE_FORMATS).optional().describe('Git repository source format.'),
1346
1361
  tagBaseUrl: z.string().nullable().optional().describe('Base URL for repository tag links.'),
1347
1362
  uri: z.string().nullable().optional().describe('Repository clone URI.'),
1348
- username: z.string().nullable().optional().describe('Repository username.'),
1349
1363
  };
1350
1364
  const promotionListSchema = {
1351
1365
  createdById: z.string().optional().describe('Filter by creator ID.'),
@@ -1955,6 +1969,35 @@ export function registerAgentiaMcpTools(server) {
1955
1969
  },
1956
1970
  title: 'Agentia Repository Update',
1957
1971
  }, (args) => safelyHandleTool(() => repositoryUpdate(args)));
1972
+ server.registerTool('agentia_repository_auth_https', {
1973
+ description: 'Configure HTTPS repository authentication. The password and optional headers are sensitive and are redacted from responses.',
1974
+ inputSchema: {
1975
+ branchBaseUrl: z.string(),
1976
+ commitBaseUrl: z.string(),
1977
+ extraHeaders: z.string().optional().describe('Sensitive optional authentication headers.'),
1978
+ id: z.string().describe('Copado Git repository ID.'),
1979
+ overwrite: z.boolean().optional().describe('Explicitly replace an existing validated credential.'),
1980
+ password: z.string().describe('Sensitive HTTPS password or personal access token.'),
1981
+ pullRequestBaseUrl: z.string(),
1982
+ tagBaseUrl: z.string(),
1983
+ uri: z.string(),
1984
+ username: z.string(),
1985
+ },
1986
+ title: 'Agentia Repository HTTPS Authentication',
1987
+ }, (args) => safelyHandleTool(() => repositoryAuthHttps(args)));
1988
+ server.registerTool('agentia_repository_auth_ssh', {
1989
+ description: 'Configure SSH repository authentication and return the generated public key.',
1990
+ inputSchema: {
1991
+ branchBaseUrl: z.string(),
1992
+ commitBaseUrl: z.string(),
1993
+ id: z.string().describe('Copado Git repository ID.'),
1994
+ overwrite: z.boolean().optional().describe('Explicitly replace an existing SSH key.'),
1995
+ pullRequestBaseUrl: z.string(),
1996
+ tagBaseUrl: z.string(),
1997
+ uri: z.string(),
1998
+ },
1999
+ title: 'Agentia Repository SSH Authentication',
2000
+ }, (args) => safelyHandleTool(() => repositoryAuthSsh(args)));
1958
2001
  server.registerTool('agentia_repository_delete', {
1959
2002
  description: 'Delete a Copado Git repository by ID via the CICD gateway.',
1960
2003
  inputSchema: { id: z.string().describe('Copado Git repository ID.') },
@@ -14,6 +14,7 @@ import { runWorkTestLocalQualityGates } from '../stock-quality-gates.js';
14
14
  import { getUserContext } from '../user-context.js';
15
15
  import { resolveWorkItemId } from '../work-active.js';
16
16
  import { DEFAULT_APEX_TEST_WAIT_MINUTES, parseApexTestClassNames, runWorkApexTests, validateApexTestWaitMinutes, } from '../work-apex-test.js';
17
+ import { fetchUserStory } from '../work-get.js';
17
18
  import { buildWorkCommitRequest, normalizeWorkCommitInput, performWorkCommit, resolveWorkCommitPlatformExperience, WORK_COMMIT_ACTIONS, WORK_COMMIT_CHANGES_HELP, WORK_COMMIT_DEFAULT_TIMEOUT_SECONDS, WORK_COMMIT_METADATA_CATEGORY_HELP, } from '../work-commit.js';
18
19
  import { buildWorkCreatePayload } from '../work-defaults.js';
19
20
  import { validateWorkMutationPayload, WORK_LONG_TEXT_MAX_LENGTH, WORK_SHORT_TEXT_MAX_LENGTH, } from '../work-flags.js';
@@ -128,11 +129,7 @@ async function workList(args = {}) {
128
129
  return mcpPaginatedListPayload('userStories', normalizeUserStoriesListPage(response));
129
130
  }
130
131
  async function workGet(args = {}) {
131
- const workItemId = await resolveWorkItemId(args.id);
132
- const userStory = await CicdGateway.call({
133
- endpoint: workEndpoint(workItemId),
134
- method: 'GET',
135
- });
132
+ const userStory = await fetchUserStory(args.id);
136
133
  return { userStory };
137
134
  }
138
135
  async function workCreate(args = {}) {
@@ -770,7 +767,7 @@ export function registerAgentiaMcpWorkTools(server) {
770
767
  title: 'Agentia Cloud Promote',
771
768
  }, (args) => safelyHandleTool(() => cloudPromote(args || {})));
772
769
  server.registerTool('agentia_work_submit', {
773
- description: 'Submit the current feature/US-XXXX work item for pipeline quality gates and validation. Runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present, then fetches origin/<lastBaseBranch> and counts origin/<lastBaseBranch>..HEAD before checking origin. Pushes and registers commits when that feature-only range is non-empty and the branch is ahead of origin. When the last pending related job template name contains Commit, waits up to 5 minutes for that job before calling headless work/submit. Before submit or promote, counts user stories ahead and behind between the source environment and the next pipeline environment, and warns when stories behind might cause promotion conflicts. With done=true or deploy=true, matches Copado UI Submit when promoting (headless work/done) and uses the same commit wait. Prefer this over agentia_work_done.',
770
+ description: 'Submit the current feature/US-XXXX work item for pipeline quality gates and validation. Runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present, then fetches origin/<lastBaseBranch> and counts origin/<lastBaseBranch>..HEAD before checking origin. Pushes and registers commits when that feature-only range is non-empty and the branch is ahead of origin. When the last pending related job template name contains Commit, waits up to 5 minutes for that job before calling headless work/submit. Before submit or promote, counts user stories ahead and behind between the source environment and the next pipeline environment, and warns when stories behind might cause promotion conflicts (advising agentia cicd work environment-sync). With done=true or deploy=true, matches Copado UI Submit when promoting (headless work/done) and uses the same commit wait. Prefer this over agentia_work_done.',
774
771
  inputSchema: {
775
772
  apexTestClasses: z
776
773
  .string()
@@ -0,0 +1,4 @@
1
+ import {modules} from '../runtime.js';
2
+ const createAuthApi = modules["plugin-host/auth.js"]["createAuthApi"]
3
+ const projectAuthStatus = modules["plugin-host/auth.js"]["projectAuthStatus"]
4
+ export {createAuthApi, projectAuthStatus};
@@ -0,0 +1,3 @@
1
+ import {modules} from '../runtime.js';
2
+ const createFormatApi = modules["plugin-host/format.js"]["createFormatApi"]
3
+ export {createFormatApi};
@@ -0,0 +1,7 @@
1
+ import {modules} from '../runtime.js';
2
+ const AGENTIA_PLUGIN_HOST_API_VERSION = modules["plugin-host/index.js"]["AGENTIA_PLUGIN_HOST_API_VERSION"]
3
+ const AGENTIA_PLUGIN_HOST_KEY = modules["plugin-host/index.js"]["AGENTIA_PLUGIN_HOST_KEY"]
4
+ const createPluginHost = modules["plugin-host/index.js"]["createPluginHost"]
5
+ const getRegisteredPluginHost = modules["plugin-host/index.js"]["getRegisteredPluginHost"]
6
+ const registerPluginHost = modules["plugin-host/index.js"]["registerPluginHost"]
7
+ export {AGENTIA_PLUGIN_HOST_API_VERSION, AGENTIA_PLUGIN_HOST_KEY, createPluginHost, getRegisteredPluginHost, registerPluginHost};
@@ -0,0 +1,4 @@
1
+ import {modules} from '../runtime.js';
2
+ const createOrganizationApi = modules["plugin-host/organization.js"]["createOrganizationApi"]
3
+ const projectHealthReport = modules["plugin-host/organization.js"]["projectHealthReport"]
4
+ export {createOrganizationApi, projectHealthReport};
@@ -0,0 +1,6 @@
1
+ import {modules} from '../runtime.js';
2
+ const deepFreeze = modules["plugin-host/projection-utils.js"]["deepFreeze"]
3
+ const nonNegativeInt = modules["plugin-host/projection-utils.js"]["nonNegativeInt"]
4
+ const omitUndefined = modules["plugin-host/projection-utils.js"]["omitUndefined"]
5
+ const optionalText = modules["plugin-host/projection-utils.js"]["optionalText"]
6
+ export {deepFreeze, nonNegativeInt, omitUndefined, optionalText};
@@ -0,0 +1,6 @@
1
+ import {modules} from '../runtime.js';
2
+ const AGENTIA_PLUGIN_HOST_API_VERSION = modules["plugin-host/registry.js"]["AGENTIA_PLUGIN_HOST_API_VERSION"]
3
+ const AGENTIA_PLUGIN_HOST_KEY = modules["plugin-host/registry.js"]["AGENTIA_PLUGIN_HOST_KEY"]
4
+ const getRegisteredPluginHost = modules["plugin-host/registry.js"]["getRegisteredPluginHost"]
5
+ const registerPluginHost = modules["plugin-host/registry.js"]["registerPluginHost"]
6
+ export {AGENTIA_PLUGIN_HOST_API_VERSION, AGENTIA_PLUGIN_HOST_KEY, getRegisteredPluginHost, registerPluginHost};
@@ -0,0 +1,4 @@
1
+ import {modules} from '../runtime.js';
2
+ const guard = modules["plugin-host/request-scope.js"]["guard"]
3
+ const runWithTransaction = modules["plugin-host/request-scope.js"]["runWithTransaction"]
4
+ export {guard, runWithTransaction};
@@ -0,0 +1,4 @@
1
+ import {modules} from '../runtime.js';
2
+ const createWorkApi = modules["plugin-host/work.js"]["createWorkApi"]
3
+ const projectWorkItem = modules["plugin-host/work.js"]["projectWorkItem"]
4
+ export {createWorkApi, projectWorkItem};
@@ -1,7 +1,9 @@
1
1
  import {modules} from './runtime.js';
2
2
  const AGENTIA_PROJECT_ROOT_ENV = modules["project-root.js"]["AGENTIA_PROJECT_ROOT_ENV"]
3
+ const CLAUDE_PROJECT_DIR_ENV = modules["project-root.js"]["CLAUDE_PROJECT_DIR_ENV"]
3
4
  const applyProjectRoot = modules["project-root.js"]["applyProjectRoot"]
5
+ const hasExplicitProjectRoot = modules["project-root.js"]["hasExplicitProjectRoot"]
4
6
  const resetProjectRootDepsForTests = modules["project-root.js"]["resetProjectRootDepsForTests"]
5
7
  const resolveProjectRoot = modules["project-root.js"]["resolveProjectRoot"]
6
8
  const setProjectRootDepsForTests = modules["project-root.js"]["setProjectRootDepsForTests"]
7
- export {AGENTIA_PROJECT_ROOT_ENV, applyProjectRoot, resetProjectRootDepsForTests, resolveProjectRoot, setProjectRootDepsForTests};
9
+ export {AGENTIA_PROJECT_ROOT_ENV, CLAUDE_PROJECT_DIR_ENV, applyProjectRoot, hasExplicitProjectRoot, resetProjectRootDepsForTests, resolveProjectRoot, setProjectRootDepsForTests};
@@ -0,0 +1,8 @@
1
+ import {modules} from './runtime.js';
2
+ const configureHttps = modules["repository-auth.js"]["configureHttps"]
3
+ const configureSsh = modules["repository-auth.js"]["configureSsh"]
4
+ const getRepository = modules["repository-auth.js"]["getRepository"]
5
+ const promptConnection = modules["repository-auth.js"]["promptConnection"]
6
+ const promptHttpsPayload = modules["repository-auth.js"]["promptHttpsPayload"]
7
+ const readHttpsAuthPayloadFromStdin = modules["repository-auth.js"]["readHttpsAuthPayloadFromStdin"]
8
+ export {configureHttps, configureSsh, getRepository, promptConnection, promptHttpsPayload, readHttpsAuthPayloadFromStdin};
@@ -6,11 +6,11 @@ const buildRepositoryMutationPayload = modules["repository-flags.js"]["buildRepo
6
6
  const collectRepositoryMutationFlagKeys = modules["repository-flags.js"]["collectRepositoryMutationFlagKeys"]
7
7
  const repositoryBooleanFlags = modules["repository-flags.js"]["repositoryBooleanFlags"]
8
8
  const repositoryClearFlags = modules["repository-flags.js"]["repositoryClearFlags"]
9
+ const repositoryConnectionStringFlags = modules["repository-flags.js"]["repositoryConnectionStringFlags"]
9
10
  const repositoryCreateFlags = modules["repository-flags.js"]["repositoryCreateFlags"]
10
11
  const repositoryListFlags = modules["repository-flags.js"]["repositoryListFlags"]
11
- const repositoryOptionalStringFlags = modules["repository-flags.js"]["repositoryOptionalStringFlags"]
12
12
  const repositoryRequiredMutationFlags = modules["repository-flags.js"]["repositoryRequiredMutationFlags"]
13
13
  const repositoryUpdateFlags = modules["repository-flags.js"]["repositoryUpdateFlags"]
14
14
  const validateNonEmptyStringFields = modules["repository-flags.js"]["validateNonEmptyStringFields"]
15
15
  const validateRepositoryMutationFlags = modules["repository-flags.js"]["validateRepositoryMutationFlags"]
16
- export {REPOSITORY_STRING_VALIDATION_KEYS, buildRepositoryCreatePayload, buildRepositoryListFilters, buildRepositoryMutationPayload, collectRepositoryMutationFlagKeys, repositoryBooleanFlags, repositoryClearFlags, repositoryCreateFlags, repositoryListFlags, repositoryOptionalStringFlags, repositoryRequiredMutationFlags, repositoryUpdateFlags, validateNonEmptyStringFields, validateRepositoryMutationFlags};
16
+ export {REPOSITORY_STRING_VALIDATION_KEYS, buildRepositoryCreatePayload, buildRepositoryListFilters, buildRepositoryMutationPayload, collectRepositoryMutationFlagKeys, repositoryBooleanFlags, repositoryClearFlags, repositoryConnectionStringFlags, repositoryCreateFlags, repositoryListFlags, repositoryRequiredMutationFlags, repositoryUpdateFlags, validateNonEmptyStringFields, validateRepositoryMutationFlags};
@@ -9,8 +9,13 @@ const normalizeRepository = modules["repository-types.js"]["normalizeRepository"
9
9
  const normalizeRepositoryValidateResult = modules["repository-types.js"]["normalizeRepositoryValidateResult"]
10
10
  const repositoriesEndpoint = modules["repository-types.js"]["repositoriesEndpoint"]
11
11
  const repositoryEndpoint = modules["repository-types.js"]["repositoryEndpoint"]
12
+ const repositoryHttpsAuthEndpoint = modules["repository-types.js"]["repositoryHttpsAuthEndpoint"]
13
+ const repositoryOAuthEndpoint = modules["repository-types.js"]["repositoryOAuthEndpoint"]
14
+ const repositoryOAuthInitEndpoint = modules["repository-types.js"]["repositoryOAuthInitEndpoint"]
15
+ const repositoryOAuthRepositoriesEndpoint = modules["repository-types.js"]["repositoryOAuthRepositoriesEndpoint"]
12
16
  const repositoryResetEndpoint = modules["repository-types.js"]["repositoryResetEndpoint"]
17
+ const repositorySshAuthEndpoint = modules["repository-types.js"]["repositorySshAuthEndpoint"]
13
18
  const repositoryValidateEndpoint = modules["repository-types.js"]["repositoryValidateEndpoint"]
14
19
  const sanitizeRepository = modules["repository-types.js"]["sanitizeRepository"]
15
20
  const withRequiredRepositoryFields = modules["repository-types.js"]["withRequiredRepositoryFields"]
16
- export {REPOSITORY_AUTH_TYPES, REPOSITORY_PROVIDERS, REPOSITORY_SOURCE_FORMATS, formatRepositoryDetail, formatRepositoryTable, normalizeRepositoriesListPage, normalizeRepository, normalizeRepositoryValidateResult, repositoriesEndpoint, repositoryEndpoint, repositoryResetEndpoint, repositoryValidateEndpoint, sanitizeRepository, withRequiredRepositoryFields};
21
+ export {REPOSITORY_AUTH_TYPES, REPOSITORY_PROVIDERS, REPOSITORY_SOURCE_FORMATS, formatRepositoryDetail, formatRepositoryTable, normalizeRepositoriesListPage, normalizeRepository, normalizeRepositoryValidateResult, repositoriesEndpoint, repositoryEndpoint, repositoryHttpsAuthEndpoint, repositoryOAuthEndpoint, repositoryOAuthInitEndpoint, repositoryOAuthRepositoriesEndpoint, repositoryResetEndpoint, repositorySshAuthEndpoint, repositoryValidateEndpoint, sanitizeRepository, withRequiredRepositoryFields};
@@ -0,0 +1,4 @@
1
+ import {modules} from './runtime.js';
2
+ const parseRepositoryUrl = modules["repository-url-prefill.js"]["parseRepositoryUrl"]
3
+ const prefillRepositoryUrls = modules["repository-url-prefill.js"]["prefillRepositoryUrls"]
4
+ export {parseRepositoryUrl, prefillRepositoryUrls};
@@ -0,0 +1,6 @@
1
+ import {modules} from './runtime.js';
2
+ const RuntimeProcessExitError = modules["runtime-invoke-context.js"]["RuntimeProcessExitError"]
3
+ const isRuntimeNestedInvoke = modules["runtime-invoke-context.js"]["isRuntimeNestedInvoke"]
4
+ const runRuntimeNestedInvoke = modules["runtime-invoke-context.js"]["runRuntimeNestedInvoke"]
5
+ const runWithoutProcessExit = modules["runtime-invoke-context.js"]["runWithoutProcessExit"]
6
+ export {RuntimeProcessExitError, isRuntimeNestedInvoke, runRuntimeNestedInvoke, runWithoutProcessExit};
@@ -0,0 +1,14 @@
1
+ import {modules} from './runtime.js';
2
+ const AGENTIA_RUNTIME_DEFAULT_IDLE_MS = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_DEFAULT_IDLE_MS"]
3
+ const AGENTIA_RUNTIME_MAX_ARGV = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_ARGV"]
4
+ const AGENTIA_RUNTIME_MAX_ARG_BYTES = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_ARG_BYTES"]
5
+ const AGENTIA_RUNTIME_MAX_ID_BYTES = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_ID_BYTES"]
6
+ const AGENTIA_RUNTIME_MAX_IN_FLIGHT = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_IN_FLIGHT"]
7
+ const AGENTIA_RUNTIME_MAX_LINE_BYTES = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_LINE_BYTES"]
8
+ const AGENTIA_RUNTIME_MAX_OUTPUT_BYTES = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_MAX_OUTPUT_BYTES"]
9
+ const AGENTIA_RUNTIME_PROTOCOL_VERSION = modules["runtime-rpc.js"]["AGENTIA_RUNTIME_PROTOCOL_VERSION"]
10
+ const invokeRuntimeCommand = modules["runtime-rpc.js"]["invokeRuntimeCommand"]
11
+ const parseRuntimeRequestLine = modules["runtime-rpc.js"]["parseRuntimeRequestLine"]
12
+ const serveRuntimeRpc = modules["runtime-rpc.js"]["serveRuntimeRpc"]
13
+ const splitArgvToCommand = modules["runtime-rpc.js"]["splitArgvToCommand"]
14
+ export {AGENTIA_RUNTIME_DEFAULT_IDLE_MS, AGENTIA_RUNTIME_MAX_ARGV, AGENTIA_RUNTIME_MAX_ARG_BYTES, AGENTIA_RUNTIME_MAX_ID_BYTES, AGENTIA_RUNTIME_MAX_IN_FLIGHT, AGENTIA_RUNTIME_MAX_LINE_BYTES, AGENTIA_RUNTIME_MAX_OUTPUT_BYTES, AGENTIA_RUNTIME_PROTOCOL_VERSION, invokeRuntimeCommand, parseRuntimeRequestLine, serveRuntimeRpc, splitArgvToCommand};