@undefineds.co/linx 0.2.18 → 0.2.22

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 (125) hide show
  1. package/README.md +23 -21
  2. package/dist/index.js +93 -142
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/ai-command.js +34 -30
  5. package/dist/lib/ai-command.js.map +1 -1
  6. package/dist/lib/auto-mode/archive.js +235 -0
  7. package/dist/lib/auto-mode/archive.js.map +1 -0
  8. package/dist/lib/{watch → auto-mode}/auth.js +6 -6
  9. package/dist/lib/auto-mode/auth.js.map +1 -0
  10. package/dist/lib/{watch → auto-mode}/codex-composer.js +1 -1
  11. package/dist/lib/auto-mode/codex-composer.js.map +1 -0
  12. package/dist/lib/auto-mode/codex-footer.js.map +1 -0
  13. package/dist/lib/auto-mode/codex-overlay.js.map +1 -0
  14. package/dist/lib/{watch → auto-mode}/codex-request-form.js +2 -2
  15. package/dist/lib/auto-mode/codex-request-form.js.map +1 -0
  16. package/dist/lib/auto-mode/codex-request-input.js.map +1 -0
  17. package/dist/lib/{watch → auto-mode}/display.js +63 -57
  18. package/dist/lib/auto-mode/display.js.map +1 -0
  19. package/dist/lib/{watch → auto-mode}/format.js +24 -16
  20. package/dist/lib/auto-mode/format.js.map +1 -0
  21. package/dist/lib/{watch → auto-mode}/hooks/claude.js +3 -2
  22. package/dist/lib/auto-mode/hooks/claude.js.map +1 -0
  23. package/dist/lib/{watch → auto-mode}/hooks/codebuddy.js +3 -2
  24. package/dist/lib/auto-mode/hooks/codebuddy.js.map +1 -0
  25. package/dist/lib/auto-mode/hooks/codex.js +18 -0
  26. package/dist/lib/auto-mode/hooks/codex.js.map +1 -0
  27. package/dist/lib/auto-mode/hooks/index.js +27 -0
  28. package/dist/lib/auto-mode/hooks/index.js.map +1 -0
  29. package/dist/lib/auto-mode/hooks/shared.js.map +1 -0
  30. package/dist/lib/auto-mode/index.js.map +1 -0
  31. package/dist/lib/auto-mode/pod-ai.js +116 -0
  32. package/dist/lib/auto-mode/pod-ai.js.map +1 -0
  33. package/dist/lib/{watch → auto-mode}/pod-approval.js +495 -325
  34. package/dist/lib/auto-mode/pod-approval.js.map +1 -0
  35. package/dist/lib/auto-mode/pod-persistence.js +412 -0
  36. package/dist/lib/auto-mode/pod-persistence.js.map +1 -0
  37. package/dist/lib/{watch → auto-mode}/runner.js +280 -193
  38. package/dist/lib/auto-mode/runner.js.map +1 -0
  39. package/dist/lib/{watch → auto-mode}/secretary.js +8 -8
  40. package/dist/lib/auto-mode/secretary.js.map +1 -0
  41. package/dist/lib/{watch → auto-mode}/types.js.map +1 -1
  42. package/dist/lib/auto-mode-command.js +114 -0
  43. package/dist/lib/auto-mode-command.js.map +1 -0
  44. package/dist/lib/codex-plugin/bridge.js +11 -12
  45. package/dist/lib/codex-plugin/bridge.js.map +1 -1
  46. package/dist/lib/codex-plugin/codex-native-proxy.js +11 -12
  47. package/dist/lib/codex-plugin/codex-native-proxy.js.map +1 -1
  48. package/dist/lib/linx-tui-contract.js +26 -0
  49. package/dist/lib/linx-tui-contract.js.map +1 -0
  50. package/dist/lib/login-command.js +9 -3
  51. package/dist/lib/login-command.js.map +1 -1
  52. package/dist/lib/models.js +2 -2
  53. package/dist/lib/models.js.map +1 -1
  54. package/dist/lib/oidc-auth.js +83 -104
  55. package/dist/lib/oidc-auth.js.map +1 -1
  56. package/dist/lib/oidc-session-storage.js +7 -1
  57. package/dist/lib/oidc-session-storage.js.map +1 -1
  58. package/dist/lib/pi-adapter/auth.js +9 -15
  59. package/dist/lib/pi-adapter/auth.js.map +1 -1
  60. package/dist/lib/pi-adapter/branding.js +9 -3
  61. package/dist/lib/pi-adapter/branding.js.map +1 -1
  62. package/dist/lib/pi-adapter/interactive.js +19 -23
  63. package/dist/lib/pi-adapter/interactive.js.map +1 -1
  64. package/dist/lib/pi-adapter/pod-approval.js +239 -1
  65. package/dist/lib/pi-adapter/pod-approval.js.map +1 -1
  66. package/dist/lib/pi-adapter/pod-mirror.js +64 -59
  67. package/dist/lib/pi-adapter/pod-mirror.js.map +1 -1
  68. package/dist/lib/pi-adapter/pod-native.js +479 -0
  69. package/dist/lib/pi-adapter/pod-native.js.map +1 -0
  70. package/dist/lib/pi-adapter/pod-tools.js +76 -40
  71. package/dist/lib/pi-adapter/pod-tools.js.map +1 -1
  72. package/dist/lib/pi-adapter/runtime.js +11 -66
  73. package/dist/lib/pi-adapter/runtime.js.map +1 -1
  74. package/dist/lib/pi-adapter/session.js +276 -33
  75. package/dist/lib/pi-adapter/session.js.map +1 -1
  76. package/dist/lib/pi-adapter/stream.js.map +1 -1
  77. package/dist/lib/pi-adapter/web-fetch.js +47 -30
  78. package/dist/lib/pi-adapter/web-fetch.js.map +1 -1
  79. package/dist/lib/pod-chat-store.js +36 -38
  80. package/dist/lib/pod-chat-store.js.map +1 -1
  81. package/dist/lib/pod-data-session.js +97 -30
  82. package/dist/lib/pod-data-session.js.map +1 -1
  83. package/package.json +3 -3
  84. package/vendor/agent-runtime/dist/auto-mode.d.ts +287 -0
  85. package/vendor/agent-runtime/dist/auto-mode.js +1498 -0
  86. package/vendor/agent-runtime/dist/index.d.ts +2 -0
  87. package/vendor/agent-runtime/dist/index.js +2 -0
  88. package/vendor/agent-runtime/dist/runtime.d.ts +47 -0
  89. package/vendor/agent-runtime/dist/runtime.js +36 -0
  90. package/vendor/agent-runtime/dist/turn-controller.d.ts +4 -4
  91. package/vendor/agent-runtime/dist/turn-controller.js +7 -7
  92. package/vendor/agent-runtime/package.json +2 -0
  93. package/dist/lib/watch/archive.js +0 -110
  94. package/dist/lib/watch/archive.js.map +0 -1
  95. package/dist/lib/watch/auth.js.map +0 -1
  96. package/dist/lib/watch/codex-composer.js.map +0 -1
  97. package/dist/lib/watch/codex-footer.js.map +0 -1
  98. package/dist/lib/watch/codex-overlay.js.map +0 -1
  99. package/dist/lib/watch/codex-request-form.js.map +0 -1
  100. package/dist/lib/watch/codex-request-input.js.map +0 -1
  101. package/dist/lib/watch/display.js.map +0 -1
  102. package/dist/lib/watch/format.js.map +0 -1
  103. package/dist/lib/watch/hooks/claude.js.map +0 -1
  104. package/dist/lib/watch/hooks/codebuddy.js.map +0 -1
  105. package/dist/lib/watch/hooks/codex.js +0 -17
  106. package/dist/lib/watch/hooks/codex.js.map +0 -1
  107. package/dist/lib/watch/hooks/index.js +0 -24
  108. package/dist/lib/watch/hooks/index.js.map +0 -1
  109. package/dist/lib/watch/hooks/shared.js.map +0 -1
  110. package/dist/lib/watch/index.js.map +0 -1
  111. package/dist/lib/watch/pod-ai.js +0 -160
  112. package/dist/lib/watch/pod-ai.js.map +0 -1
  113. package/dist/lib/watch/pod-approval.js.map +0 -1
  114. package/dist/lib/watch/pod-persistence.js +0 -334
  115. package/dist/lib/watch/pod-persistence.js.map +0 -1
  116. package/dist/lib/watch/runner.js.map +0 -1
  117. package/dist/lib/watch/secretary.js.map +0 -1
  118. package/dist/watch-cli.js +0 -116
  119. package/dist/watch-cli.js.map +0 -1
  120. /package/dist/lib/{watch → auto-mode}/codex-footer.js +0 -0
  121. /package/dist/lib/{watch → auto-mode}/codex-overlay.js +0 -0
  122. /package/dist/lib/{watch → auto-mode}/codex-request-input.js +0 -0
  123. /package/dist/lib/{watch → auto-mode}/hooks/shared.js +0 -0
  124. /package/dist/lib/{watch → auto-mode}/index.js +0 -0
  125. /package/dist/lib/{watch → auto-mode}/types.js +0 -0
@@ -1,8 +1,9 @@
1
- import { createAcpAgentCapabilities } from '../../../../vendor/agent-runtime/dist/index.js';
1
+ import { createAcpAgentCapabilities, linxRuntimeEndpointForBackend } from '../../../../vendor/agent-runtime/dist/index.js';
2
2
  export const codebuddyHook = {
3
3
  id: 'codebuddy',
4
+ endpoint: linxRuntimeEndpointForBackend('codebuddy'),
4
5
  label: 'CodeBuddy Code',
5
- description: 'Use local codebuddy ACP transport for persistent multi-turn watch sessions.',
6
+ description: 'Use local codebuddy ACP transport for persistent multi-turn auto-mode sessions.',
6
7
  capabilities: createAcpAgentCapabilities({
7
8
  hasThinking: true,
8
9
  }),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebuddy.js","sourceRoot":"","sources":["../../../../src/lib/auto-mode/hooks/codebuddy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAG/F,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,6BAA6B,CAAC,WAAW,CAAC;IACpD,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,iFAAiF;IAC9F,YAAY,EAAE,0BAA0B,CAAC;QACvC,WAAW,EAAE,IAAI;KAClB,CAAC;IACF,cAAc,CAAC,OAAO;QACpB,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE;gBACJ,OAAO;gBACP,iBAAiB;gBACjB,OAAO;gBACP,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,OAAO,CAAC,eAAe;aAC3B;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { createAcpAgentCapabilities, linxRuntimeEndpointForBackend } from '../../../../vendor/agent-runtime/dist/index.js';
2
+ import { resolveCodexAcpCommand } from './shared.js';
3
+ export const codexHook = {
4
+ id: 'codex',
5
+ endpoint: linxRuntimeEndpointForBackend('codex'),
6
+ label: 'Codex',
7
+ description: 'Use local codex-acp runtime; Codex does the work while LinX owns auth, storage, and approval control.',
8
+ capabilities: createAcpAgentCapabilities({
9
+ hasThinking: true,
10
+ }),
11
+ buildSpawnPlan(options) {
12
+ return {
13
+ command: options.commandOverride ?? resolveCodexAcpCommand(),
14
+ args: [...options.passthroughArgs],
15
+ };
16
+ },
17
+ };
18
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/lib/auto-mode/hooks/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAE/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,EAAE,EAAE,OAAO;IACX,QAAQ,EAAE,6BAA6B,CAAC,OAAO,CAAC;IAChD,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,uGAAuG;IACpH,YAAY,EAAE,0BAA0B,CAAC;QACvC,WAAW,EAAE,IAAI;KAClB,CAAC;IACF,cAAc,CAAC,OAAO;QACpB,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,eAAe,IAAI,sBAAsB,EAAE;YAC5D,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;SACnC,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { claudeHook } from './claude.js';
2
+ import { codebuddyHook } from './codebuddy.js';
3
+ import { codexHook } from './codex.js';
4
+ const HOOKS = {
5
+ codex: codexHook,
6
+ claude: claudeHook,
7
+ codebuddy: codebuddyHook,
8
+ };
9
+ export function getAutoModeHook(backend) {
10
+ return HOOKS[backend];
11
+ }
12
+ export function getAutoModeBackendLabel(backend) {
13
+ return HOOKS[backend]?.label ?? backend;
14
+ }
15
+ export function listAutoModeHooks() {
16
+ return Object.values(HOOKS);
17
+ }
18
+ export function describeAutoModeMode(mode) {
19
+ if (mode === 'manual') {
20
+ return 'Wait for user approval instead of letting AI secretary decide.';
21
+ }
22
+ if (mode === 'smart') {
23
+ return 'Let AI secretary auto-resolve clear low-risk approvals and escalate the rest.';
24
+ }
25
+ return 'Let AI secretary handle approvals automatically after the user reaction window.';
26
+ }
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/auto-mode/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,KAAK,GAAiD;IAC1D,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,aAAa;CACzB,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAkB;IACrD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,gEAAgE,CAAA;IACzE,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,+EAA+E,CAAA;IACxF,CAAC;IAED,OAAO,iFAAiF,CAAA;AAC1F,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/lib/auto-mode/hooks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,SAAS,iBAAiB,CAAC,WAAmB,EAAE,eAAuB;IACrE,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAA;QACtE,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;QACnD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,iBAAiB,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAA;AAC1F,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/auto-mode/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,116 @@
1
+ import { getDefaultPodDataSession } from '../pod-data-session.js';
2
+ import { selectAIConfigCredential } from '../models.js';
3
+ const BACKEND_PROVIDER_ID = {
4
+ claude: 'anthropic',
5
+ codex: 'openai',
6
+ codebuddy: 'codebuddy',
7
+ };
8
+ function selectPodCredentialForBackend(backend, credentials, providers) {
9
+ const providerId = BACKEND_PROVIDER_ID[backend];
10
+ const selected = selectAIConfigCredential(providerId, credentials, providers);
11
+ if (!selected) {
12
+ return null;
13
+ }
14
+ return {
15
+ providerId,
16
+ apiKey: selected.apiKey,
17
+ baseUrl: selected.baseUrl,
18
+ };
19
+ }
20
+ function buildBackendEnv(match, backend) {
21
+ if (backend === 'claude') {
22
+ return {
23
+ backend,
24
+ provider: 'anthropic',
25
+ env: {
26
+ ANTHROPIC_API_KEY: match.apiKey,
27
+ },
28
+ };
29
+ }
30
+ if (backend === 'codex') {
31
+ return {
32
+ backend,
33
+ provider: 'openai',
34
+ env: {
35
+ OPENAI_API_KEY: match.apiKey,
36
+ CODEX_API_KEY: match.apiKey,
37
+ },
38
+ };
39
+ }
40
+ return {
41
+ backend,
42
+ provider: 'codebuddy',
43
+ env: {
44
+ CODEBUDDY_API_KEY: match.apiKey,
45
+ ...(match.baseUrl ? { CODEBUDDY_BASE_URL: match.baseUrl } : {}),
46
+ },
47
+ };
48
+ }
49
+ function missingPodClientCredentialsMessage() {
50
+ return 'LinX cloud credential source is not connected yet. Run `linx login` first.';
51
+ }
52
+ export function podCredentialMissingMessage(backend) {
53
+ if (backend === 'claude') {
54
+ return 'No active Anthropic AI credential was found in LinX Pod AI settings. Configure an Anthropic credential in LinX, then try again.';
55
+ }
56
+ if (backend === 'codex') {
57
+ return 'No active OpenAI/Codex credential was found in LinX Pod AI settings. Configure an OpenAI credential in LinX, then try again.';
58
+ }
59
+ if (backend === 'codebuddy') {
60
+ return 'No active CodeBuddy credential was found in LinX Pod AI settings. Configure a CodeBuddy credential in LinX, then try again.';
61
+ }
62
+ return 'No matching Pod AI credential was found.';
63
+ }
64
+ async function dynamicImport(specifier) {
65
+ const loader = new Function('modulePath', 'return import(modulePath)');
66
+ return loader(specifier);
67
+ }
68
+ async function createDefaultRuntime() {
69
+ const models = await dynamicImport(new URL('../models.js', import.meta.url).href);
70
+ return {
71
+ getPodDataSession: getDefaultPodDataSession,
72
+ createDb(podSession) {
73
+ return models.drizzle(podSession.solidSession, {
74
+ logger: false,
75
+ disableInteropDiscovery: true,
76
+ podUrl: podSession.podUrl,
77
+ resourcePreparation: 'off',
78
+ schema: models.solidResources,
79
+ });
80
+ },
81
+ credentialResource: models.credentialResource,
82
+ aiProviderResource: models.aiProviderResource,
83
+ };
84
+ }
85
+ async function loadRowsWithDrizzle(runtime, podSession) {
86
+ if (!runtime.createDb || !runtime.credentialResource || !runtime.aiProviderResource) {
87
+ return null;
88
+ }
89
+ const db = runtime.createDb(podSession);
90
+ const [credentials, providers] = await Promise.all([
91
+ db.select().from(runtime.credentialResource).execute(),
92
+ db.select().from(runtime.aiProviderResource).execute(),
93
+ ]);
94
+ return { credentials, providers };
95
+ }
96
+ export async function loadPodBackendCredential(backend, runtime) {
97
+ const activeRuntime = runtime ?? await createDefaultRuntime();
98
+ const podSession = await activeRuntime.getPodDataSession();
99
+ if (!podSession) {
100
+ throw new Error(missingPodClientCredentialsMessage());
101
+ }
102
+ const rows = await loadRowsWithDrizzle(activeRuntime, podSession);
103
+ if (!rows) {
104
+ throw new Error('LinX cloud credential source requires shared models/drizzle-solid access.');
105
+ }
106
+ const match = selectPodCredentialForBackend(backend, rows.credentials, rows.providers);
107
+ if (!match) {
108
+ return null;
109
+ }
110
+ return buildBackendEnv(match, backend);
111
+ }
112
+ export const __podInternal = {
113
+ BACKEND_PROVIDER_ID,
114
+ selectPodCredentialForBackend,
115
+ };
116
+ //# sourceMappingURL=pod-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pod-ai.js","sourceRoot":"","sources":["../../../src/lib/auto-mode/pod-ai.ts"],"names":[],"mappings":"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"}