@felan-ai/felan 0.1.0-alpha.3 → 0.1.0

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/NOTICE CHANGED
@@ -6,6 +6,6 @@ This package composes the MIT-licensed @felan-ai/agent-core and Felan extension
6
6
  packages listed in package.json. Their package-level LICENSE and NOTICE files
7
7
  contain the applicable attribution and source provenance.
8
8
 
9
- The terminal application uses @earendil-works/pi-coding-agent 0.82.1 from
9
+ The terminal application uses @earendil-works/pi-coding-agent 0.83.0 from
10
10
  https://github.com/earendil-works/pi, licensed under the MIT License.
11
11
  Copyright (c) 2025 Mario Zechner.
package/README.md CHANGED
@@ -21,11 +21,29 @@ not an isolation boundary.
21
21
  Only the source-controlled Felan extension package list is imported. Ambient Pi
22
22
  packages, extensions, skills, prompts, themes, and context files remain filtered;
23
23
  inline Felan extensions can still provide shared tools, prompts, interaction,
24
- and subagent behavior. The default local list includes `@felan-ai/ext-powerline`
25
- for an ANSI-aware footer; it is a direct TUI dependency and is not part of any
26
- cloud composition. Agent Core's `spawn_agent` tool delegates child creation
27
- through the portable host contract; local children run as in-process Agent Core
28
- sessions on fresh host runtimes without Felan cloud services.
24
+ and subagent behavior. The application explicitly configures
25
+ `@felan-ai/ext-subagents` with its session-bound local host; the extension provides `Agent`, `list_subagents`,
26
+ `get_subagent_result`, `steer_subagent`, and `cancel_subagent`. A root-scoped
27
+ local host tracks foreground and background runs, persists the latest child session
28
+ metadata, delivers completion notices, supports bounded nesting, and uses the
29
+ application's current workspace. The TUI status line shows active/recent child
30
+ state, and runtime shutdown awaits active-child cancellation before Pi teardown.
31
+ Completed-child continuation uses the same child ID and Pi session file while
32
+ replacing the latest result. The default list also
33
+ includes `@felan-ai/ext-powerline` for an ANSI-aware footer; it is a direct TUI
34
+ dependency and is not part of cloud composition.
35
+
36
+ Local agent definitions are loaded only from bundled Felan definitions,
37
+ `$FELAN_AGENT_DIR/agents/*.md`, and `<workspace>/.felan/agents/*.md`, with
38
+ project definitions taking precedence. Pi ambient agent discovery remains
39
+ disabled. Local subagent concurrency defaults to four and depth defaults to
40
+ three; set `felanSubagents.concurrency` and `felanSubagents.maxDepth` in the
41
+ Felan settings file to configure those bounded values.
42
+
43
+ Local model selectors are deterministic and support explicit inheritance or an
44
+ exact authenticated `provider/model`; exact selectors never fall back. Requested
45
+ thinking levels are checked against that resolved model and unsupported levels
46
+ return `unsupported_thinking` instead of being silently clamped.
29
47
 
30
48
  ```sh
31
49
  felan --diagnostics
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE5F,MAAM,WAAW,oBAAqB,SAAQ,8BAA8B;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrF"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,oBAAqB,SAAQ,8BAA8B;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrF"}
@@ -1,5 +1,6 @@
1
1
  import { InteractiveMode } from '@earendil-works/pi-coding-agent';
2
- import { createLocalFelanRuntime } from './runtime.js';
2
+ import { createLocalFelanRuntime, } from './runtime.js';
3
+ import { attachLocalSubagentPresenter } from './subagents/presenter.js';
3
4
  export async function runLocalFelan(options = {}) {
4
5
  const runtime = await createLocalFelanRuntime(options);
5
6
  const previousPiAgentDir = process.env.PI_CODING_AGENT_DIR;
@@ -9,7 +10,13 @@ export async function runLocalFelan(options = {}) {
9
10
  ...(options.initialMessage === undefined ? {} : { initialMessage: options.initialMessage }),
10
11
  ...(options.verbose === undefined ? {} : { verbose: options.verbose }),
11
12
  });
12
- await mode.run();
13
+ const detachPresenter = attachLocalSubagentPresenter(runtime, mode);
14
+ try {
15
+ await mode.run();
16
+ }
17
+ finally {
18
+ detachPresenter();
19
+ }
13
20
  }
14
21
  finally {
15
22
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAuC,MAAM,cAAc,CAAC;AAO5F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE;YACxC,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EACL,uBAAuB,GAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAOxE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE;YACxC,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,4BAA4B,CAClD,OAAO,EACP,IAAqE,CACtE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import type { ExtensionPackageImporter } from '@felan-ai/agent-core';
2
- export declare const localExtensionPackages: readonly ["@felan-ai/ext-prewalk", "@felan-ai/ext-context", "@felan-ai/ext-powerline"];
2
+ import { type SubagentHost } from '@felan-ai/ext-subagents';
3
+ export declare const subagentsExtensionPackage = "@felan-ai/ext-subagents";
4
+ export declare const localExtensionPackages: readonly ["@felan-ai/ext-subagents", "@felan-ai/ext-prewalk", "@felan-ai/ext-context", "@felan-ai/ext-powerline"];
3
5
  export declare const importLocalExtension: ExtensionPackageImporter;
6
+ export declare function createLocalExtensionImporter(host: SubagentHost, importExtension?: ExtensionPackageImporter, shutdownHost?: () => Promise<void>): ExtensionPackageImporter;
4
7
  //# sourceMappingURL=extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,eAAO,MAAM,sBAAsB,wFAIzB,CAAC;AAIX,eAAO,MAAM,oBAAoB,EAAE,wBAKlC,CAAC"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,sBAAsB,mHAKzB,CAAC;AAIX,eAAO,MAAM,oBAAoB,EAAE,wBAKlC,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,YAAY,EAClB,eAAe,GAAE,wBAA+C,EAChE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACjC,wBAAwB,CAiB1B"}
@@ -1,4 +1,7 @@
1
+ import { createSubagentsExtension, } from '@felan-ai/ext-subagents';
2
+ export const subagentsExtensionPackage = '@felan-ai/ext-subagents';
1
3
  export const localExtensionPackages = [
4
+ '@felan-ai/ext-subagents',
2
5
  '@felan-ai/ext-prewalk',
3
6
  '@felan-ai/ext-context',
4
7
  '@felan-ai/ext-powerline',
@@ -10,4 +13,23 @@ export const importLocalExtension = async (packageName) => {
10
13
  }
11
14
  return import(packageName);
12
15
  };
16
+ export function createLocalExtensionImporter(host, importExtension = importLocalExtension, shutdownHost) {
17
+ return async (packageName) => {
18
+ if (packageName === subagentsExtensionPackage) {
19
+ const subagents = createSubagentsExtension(host);
20
+ return {
21
+ default: ((pi) => {
22
+ subagents(pi);
23
+ if (shutdownHost) {
24
+ pi.on('session_shutdown', async (event) => {
25
+ if (event.reason !== 'reload')
26
+ await shutdownHost();
27
+ });
28
+ }
29
+ }),
30
+ };
31
+ }
32
+ return importExtension(packageName);
33
+ };
34
+ }
13
35
  //# sourceMappingURL=extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;CACjB,CAAC;AAEX,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,oBAAoB,GAA6B,KAAK,EAAE,WAAW,EAAE,EAAE;IAClF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,yBAAyB;IACzB,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;CACjB,CAAC;AAEX,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,oBAAoB,GAA6B,KAAK,EAAE,WAAW,EAAE,EAAE;IAClF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,IAAkB,EAClB,kBAA4C,oBAAoB,EAChE,YAAkC;IAElC,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE;QAC3B,IAAI,WAAW,KAAK,yBAAyB,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,SAAS,CAAC,EAAE,CAAC,CAAC;oBACd,IAAI,YAAY,EAAE,CAAC;wBACjB,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;4BACxC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;gCAAE,MAAM,YAAY,EAAE,CAAC;wBACtD,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAuD;aACzD,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,10 @@ export type { RunLocalFelanOptions } from './application.js';
3
3
  export { runCli } from './cli-main.js';
4
4
  export type { CliDependencies } from './cli-main.js';
5
5
  export { importLocalExtension, localExtensionPackages } from './extensions.js';
6
- export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionHost, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
7
- export type { CreateLocalFelanRuntimeOptions, CreateLocalSessionRuntimeFactoryOptions, } from './runtime.js';
6
+ export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
7
+ export { LocalSubagentHost } from './subagents/host.js';
8
+ export type { CreateLocalSubagentHostOptions, LocalSubagentSettings, LocalSubagentView, } from './subagents/host.js';
9
+ export type { CreateLocalFelanRuntimeOptions, CreateLocalSessionRuntimeFactoryOptions, LocalFelanRuntime, } from './runtime.js';
8
10
  export { createLocalSettingsManager } from './settings.js';
9
11
  export { FELAN_VERSION } from './version.js';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,8BAA8B,EAC9B,uCAAuC,GACxC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,8BAA8B,EAC9B,uCAAuC,EACvC,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  export { runLocalFelan } from './application.js';
2
2
  export { runCli } from './cli-main.js';
3
3
  export { importLocalExtension, localExtensionPackages } from './extensions.js';
4
- export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionHost, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
4
+ export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
5
+ export { LocalSubagentHost } from './subagents/host.js';
5
6
  export { createLocalSettingsManager } from './settings.js';
6
7
  export { FELAN_VERSION } from './version.js';
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/runtime.d.ts CHANGED
@@ -1,10 +1,17 @@
1
- import { ModelRuntime, SessionManager, type AgentRuntime, type AgentSessionHost, type CreateAgentSessionRuntimeFactory, type ExtensionPackageImporter } from '@felan-ai/agent-core';
1
+ import { ModelRuntime, SessionManager, type AgentRuntime, type CreateAgentSessionRuntimeFactory, type ExtensionPackageImporter } from '@felan-ai/agent-core';
2
+ import { type AgentSessionRuntime } from '@earendil-works/pi-coding-agent';
3
+ import { LocalSubagentHost, type LocalSubagentSettings } from './subagents/host.js';
4
+ export type LocalFelanRuntime = AgentSessionRuntime & {
5
+ readonly localSubagentHost: LocalSubagentHost;
6
+ subscribeLocalSubagentHost(listener: (host: LocalSubagentHost) => void): () => void;
7
+ };
2
8
  export interface CreateLocalSessionRuntimeFactoryOptions {
3
9
  readonly agentDir: string;
4
10
  readonly modelRuntime: ModelRuntime;
5
11
  readonly extensionPackages?: readonly string[];
6
12
  readonly importExtension?: ExtensionPackageImporter;
7
13
  readonly runtimeFactory?: (cwd: string) => AgentRuntime;
14
+ readonly subagentSettings?: LocalSubagentSettings;
8
15
  }
9
16
  export interface CreateLocalFelanRuntimeOptions {
10
17
  readonly cwd?: string;
@@ -14,10 +21,10 @@ export interface CreateLocalFelanRuntimeOptions {
14
21
  readonly modelRuntime?: ModelRuntime;
15
22
  readonly sessionDir?: string;
16
23
  readonly runtimeFactory?: (cwd: string) => AgentRuntime;
24
+ readonly subagentSettings?: LocalSubagentSettings;
17
25
  }
18
26
  export declare function getLocalAgentDir(): string;
19
27
  export declare function createLocalSessionRuntimeFactory(options: CreateLocalSessionRuntimeFactoryOptions): CreateAgentSessionRuntimeFactory;
20
- export declare function createLocalSessionHost(options: CreateLocalSessionRuntimeFactoryOptions, cwd: string): AgentSessionHost;
21
28
  export declare function createLocalModelRuntime(agentDir: string): Promise<ModelRuntime>;
22
- export declare function createLocalFelanRuntime(options?: CreateLocalFelanRuntimeOptions): Promise<import("@earendil-works/pi-coding-agent").AgentSessionRuntime>;
29
+ export declare function createLocalFelanRuntime(options?: CreateLocalFelanRuntimeOptions): Promise<LocalFelanRuntime>;
23
30
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,YAAY,EACZ,cAAc,EAId,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAQ9B,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CACzD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAyClC;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uCAAuC,EAChD,GAAG,EAAE,MAAM,GACV,gBAAgB,CA2GlB;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAKrF;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,8BAAmC,0EAuB7C"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,YAAY,EACZ,cAAc,EAGd,KAAK,YAAY,EAEjB,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAe7B,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,0BAA0B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrF,CAAC;AAEF,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACnD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACnD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAoElC;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAKrF;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAwB5B"}
package/dist/runtime.js CHANGED
@@ -1,26 +1,54 @@
1
- import { mkdir } from 'node:fs/promises';
1
+ import { mkdir, readFile } from 'node:fs/promises';
2
2
  import { homedir } from 'node:os';
3
3
  import { join, resolve } from 'node:path';
4
- import { AGENT_CORE_VERSION, HostAgentRuntime, ModelRuntime, SessionManager, createAgentCoreSession, createAgentCoreSessionRuntimeFactory, createAgentSessionRuntime, } from '@felan-ai/agent-core';
5
- import { resolveCliModel, resolveModelScopeWithDiagnostics, } from '@earendil-works/pi-coding-agent';
6
- import { importLocalExtension, localExtensionPackages } from './extensions.js';
4
+ import { AGENT_CORE_VERSION, HostAgentRuntime, ModelRuntime, SessionManager, createAgentCoreSessionRuntimeFactory, createAgentSessionRuntime, } from '@felan-ai/agent-core';
5
+ import { bindSubagentSession } from '@felan-ai/ext-subagents';
6
+ import { resolveModelScopeWithDiagnostics, } from '@earendil-works/pi-coding-agent';
7
+ import { createLocalExtensionImporter, importLocalExtension, localExtensionPackages, } from './extensions.js';
7
8
  import { createLocalSettingsManager } from './settings.js';
9
+ import { LocalSubagentHost, } from './subagents/host.js';
10
+ const localSubagentHost = Symbol('localSubagentHost');
11
+ const localSubagentShutdown = Symbol('localSubagentShutdown');
8
12
  export function getLocalAgentDir() {
9
13
  return resolve(process.env.FELAN_AGENT_DIR ?? join(homedir(), '.felan', 'agent'));
10
14
  }
11
15
  export function createLocalSessionRuntimeFactory(options) {
12
- const createCoreRuntime = createAgentCoreSessionRuntimeFactory(async ({ cwd }) => {
16
+ const sessions = new WeakMap();
17
+ const createCoreRuntime = createAgentCoreSessionRuntimeFactory(async ({ cwd, sessionManager }) => {
13
18
  const settingsManager = createLocalSettingsManager(cwd, options.agentDir);
14
19
  const modelPatterns = settingsManager.getEnabledModels();
15
20
  const modelScope = modelPatterns && modelPatterns.length > 0
16
21
  ? await resolveModelScopeWithDiagnostics(modelPatterns, options.modelRuntime)
17
22
  : { scopedModels: [], diagnostics: [] };
23
+ const extensionPackages = options.extensionPackages ?? localExtensionPackages;
24
+ const importExtension = options.importExtension ?? importLocalExtension;
25
+ const host = await LocalSubagentHost.create({
26
+ sessionId: sessionManager.getSessionId(),
27
+ cwd,
28
+ agentDir: options.agentDir,
29
+ modelRuntime: options.modelRuntime,
30
+ settingsManager,
31
+ extensionPackages,
32
+ importExtension,
33
+ ...(options.runtimeFactory === undefined ? {} : { runtimeFactory: options.runtimeFactory }),
34
+ ...(options.subagentSettings === undefined ? {} : { settings: options.subagentSettings }),
35
+ });
36
+ const shutdownState = { failed: false };
37
+ const shutdownHost = async () => {
38
+ try {
39
+ await host.shutdown();
40
+ }
41
+ catch (error) {
42
+ shutdownState.failed = true;
43
+ shutdownState.error = error;
44
+ throw error;
45
+ }
46
+ };
47
+ sessions.set(sessionManager, { host, modelScope, shutdownState });
18
48
  return {
19
- applicationKind: 'tui',
20
49
  runtime: options.runtimeFactory?.(cwd) ?? new HostAgentRuntime(cwd),
21
- host: createLocalSessionHost(options, cwd),
22
- extensionPackages: options.extensionPackages ?? localExtensionPackages,
23
- importExtension: options.importExtension ?? importLocalExtension,
50
+ extensionPackages,
51
+ importExtension: createLocalExtensionImporter(host, importExtension, shutdownHost),
24
52
  modelRuntime: options.modelRuntime,
25
53
  settingsManager,
26
54
  ...(modelScope.scopedModels.length === 0 ? {} : { scopedModels: modelScope.scopedModels }),
@@ -28,11 +56,11 @@ export function createLocalSessionRuntimeFactory(options) {
28
56
  });
29
57
  return async (request) => {
30
58
  const result = await createCoreRuntime(request);
59
+ const { host, modelScope, shutdownState } = sessions.get(request.sessionManager);
60
+ bindSubagentSession({ host, session: result.session });
61
+ Object.defineProperty(result.services, localSubagentHost, { value: host });
62
+ Object.defineProperty(result.services, localSubagentShutdown, { value: shutdownState });
31
63
  const settingsErrors = result.services.settingsManager.drainErrors();
32
- const modelPatterns = result.services.settingsManager.getEnabledModels();
33
- const modelScope = modelPatterns && modelPatterns.length > 0
34
- ? await resolveModelScopeWithDiagnostics(modelPatterns, options.modelRuntime)
35
- : { diagnostics: [] };
36
64
  return {
37
65
  ...result,
38
66
  diagnostics: [
@@ -47,114 +75,6 @@ export function createLocalSessionRuntimeFactory(options) {
47
75
  };
48
76
  };
49
77
  }
50
- export function createLocalSessionHost(options, cwd) {
51
- return {
52
- createChildSession: async (request) => {
53
- const sessionManager = SessionManager.inMemory(cwd);
54
- const childSessionId = sessionManager.getSessionId();
55
- const resolvedModel = request.model
56
- ? resolveCliModel({ cliModel: request.model, modelRuntime: options.modelRuntime })
57
- : undefined;
58
- if (resolvedModel?.error) {
59
- return {
60
- ok: false,
61
- sessionId: childSessionId,
62
- status: 'failed',
63
- error: resolvedModel.error,
64
- };
65
- }
66
- const created = await createAgentCoreSession({
67
- applicationKind: 'tui',
68
- runtime: options.runtimeFactory?.(cwd) ?? new HostAgentRuntime(cwd),
69
- host: createLocalSessionHost(options, cwd),
70
- extensionPackages: options.extensionPackages ?? localExtensionPackages,
71
- importExtension: options.importExtension ?? importLocalExtension,
72
- modelRuntime: options.modelRuntime,
73
- settingsManager: createLocalSettingsManager(cwd, options.agentDir),
74
- sessionManager,
75
- appendSystemPrompt: [`You are the ${request.personaId} child agent.`],
76
- ...(resolvedModel?.model === undefined ? {} : { model: resolvedModel.model }),
77
- ...(resolvedModel?.thinkingLevel === undefined
78
- ? {}
79
- : { thinkingLevel: resolvedModel.thinkingLevel }),
80
- });
81
- try {
82
- await created.session.bindExtensions({ mode: 'print' });
83
- }
84
- catch (error) {
85
- created.session.dispose();
86
- throw error;
87
- }
88
- const runChild = async () => {
89
- let timeout;
90
- if (request.timeoutMinutes) {
91
- timeout = setTimeout(() => void created.session.abort(), request.timeoutMinutes * 60_000);
92
- timeout.unref();
93
- }
94
- try {
95
- await created.session.prompt(request.prompt);
96
- let assistant;
97
- for (let index = created.session.messages.length - 1; index >= 0; index -= 1) {
98
- const message = created.session.messages[index];
99
- if (message?.role === 'assistant') {
100
- assistant = message;
101
- break;
102
- }
103
- }
104
- if (!assistant) {
105
- return {
106
- ok: false,
107
- sessionId: childSessionId,
108
- status: 'failed',
109
- error: 'Child session completed without an assistant response',
110
- };
111
- }
112
- if (assistant.stopReason === 'error' || assistant.stopReason === 'aborted') {
113
- return {
114
- ok: false,
115
- sessionId: childSessionId,
116
- status: 'failed',
117
- error: assistant.errorMessage ?? `Child session ${assistant.stopReason}`,
118
- };
119
- }
120
- const result = assistant.content
121
- .filter((part) => part.type === 'text')
122
- .map((part) => part.text)
123
- .join('\n');
124
- return {
125
- ok: true,
126
- sessionId: childSessionId,
127
- status: 'completed',
128
- result,
129
- };
130
- }
131
- catch (error) {
132
- return {
133
- ok: false,
134
- sessionId: childSessionId,
135
- status: 'failed',
136
- error: error instanceof Error ? error.message : String(error),
137
- };
138
- }
139
- finally {
140
- if (timeout)
141
- clearTimeout(timeout);
142
- created.session.dispose();
143
- }
144
- };
145
- if (!request.block) {
146
- void runChild();
147
- return {
148
- ok: true,
149
- sessionId: childSessionId,
150
- status: 'running',
151
- message: 'Child session started',
152
- };
153
- }
154
- return runChild();
155
- },
156
- };
157
- }
158
78
  export async function createLocalModelRuntime(agentDir) {
159
79
  return ModelRuntime.create({
160
80
  authPath: join(agentDir, 'auth.json'),
@@ -175,12 +95,123 @@ export async function createLocalFelanRuntime(options = {}) {
175
95
  const createRuntime = createLocalSessionRuntimeFactory({
176
96
  agentDir,
177
97
  modelRuntime,
98
+ subagentSettings: options.subagentSettings ?? await loadLocalSubagentSettings(agentDir),
178
99
  ...(options.runtimeFactory === undefined ? {} : { runtimeFactory: options.runtimeFactory }),
179
100
  });
180
- return createAgentSessionRuntime(createRuntime, {
101
+ const runtime = await createAgentSessionRuntime(createRuntime, {
181
102
  cwd: sessionManager.getCwd(),
182
103
  agentDir,
183
104
  sessionManager,
184
105
  });
106
+ return installLocalSubagentLifecycle(runtime);
107
+ }
108
+ function getRuntimeLocalSubagentHost(runtime) {
109
+ const host = runtime.services[localSubagentHost];
110
+ if (!host)
111
+ throw new Error('Local subagent host is unavailable');
112
+ return host;
113
+ }
114
+ function getRuntimeLocalSubagentShutdown(runtime) {
115
+ const state = runtime.services[localSubagentShutdown];
116
+ if (!state)
117
+ throw new Error('Local subagent shutdown state is unavailable');
118
+ return state;
119
+ }
120
+ function installLocalSubagentLifecycle(runtime) {
121
+ const listeners = new Set();
122
+ const localRuntime = runtime;
123
+ Object.defineProperties(localRuntime, {
124
+ localSubagentHost: { get: () => getRuntimeLocalSubagentHost(runtime) },
125
+ subscribeLocalSubagentHost: {
126
+ value: (listener) => {
127
+ listeners.add(listener);
128
+ return () => listeners.delete(listener);
129
+ },
130
+ },
131
+ });
132
+ const notifyHostReplacement = () => {
133
+ const host = localRuntime.localSubagentHost;
134
+ for (const listener of listeners)
135
+ listener(host);
136
+ };
137
+ const dispose = runtime.dispose.bind(runtime);
138
+ runtime.dispose = async () => {
139
+ const shutdownState = getRuntimeLocalSubagentShutdown(runtime);
140
+ const session = runtime.session;
141
+ const sessionDispose = session.dispose;
142
+ let piDisposalStarted = false;
143
+ const observedDispose = () => {
144
+ piDisposalStarted = true;
145
+ sessionDispose.call(session);
146
+ };
147
+ session.dispose = observedDispose;
148
+ let disposeFailed = false;
149
+ let disposeError;
150
+ try {
151
+ await dispose();
152
+ }
153
+ catch (error) {
154
+ disposeFailed = true;
155
+ disposeError = error;
156
+ if (!piDisposalStarted) {
157
+ try {
158
+ observedDispose();
159
+ }
160
+ catch (fallbackError) {
161
+ throw new AggregateError([error, fallbackError], 'Local runtime shutdown and Pi disposal both failed');
162
+ }
163
+ }
164
+ }
165
+ finally {
166
+ if (session.dispose === observedDispose)
167
+ session.dispose = sessionDispose;
168
+ }
169
+ if (disposeFailed)
170
+ throw disposeError;
171
+ if (shutdownState.failed)
172
+ throw shutdownState.error;
173
+ };
174
+ const switchSession = runtime.switchSession.bind(runtime);
175
+ runtime.switchSession = async (...args) => {
176
+ const result = await switchSession(...args);
177
+ if (!result.cancelled)
178
+ notifyHostReplacement();
179
+ return result;
180
+ };
181
+ const newSession = runtime.newSession.bind(runtime);
182
+ runtime.newSession = async (...args) => {
183
+ const result = await newSession(...args);
184
+ if (!result.cancelled)
185
+ notifyHostReplacement();
186
+ return result;
187
+ };
188
+ const fork = runtime.fork.bind(runtime);
189
+ runtime.fork = async (...args) => {
190
+ const result = await fork(...args);
191
+ if (!result.cancelled)
192
+ notifyHostReplacement();
193
+ return result;
194
+ };
195
+ const importFromJsonl = runtime.importFromJsonl.bind(runtime);
196
+ runtime.importFromJsonl = async (...args) => {
197
+ const result = await importFromJsonl(...args);
198
+ if (!result.cancelled)
199
+ notifyHostReplacement();
200
+ return result;
201
+ };
202
+ return localRuntime;
203
+ }
204
+ async function loadLocalSubagentSettings(agentDir) {
205
+ try {
206
+ const settings = JSON.parse(await readFile(join(agentDir, 'settings.json'), 'utf8'));
207
+ return settings.felanSubagents ?? {};
208
+ }
209
+ catch (error) {
210
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT')
211
+ return {};
212
+ if (error instanceof SyntaxError)
213
+ return {};
214
+ throw error;
215
+ }
185
216
  }
186
217
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SubagentDescriptor } from '@felan-ai/ext-subagents';
2
+ export interface LocalSubagentDefinition {
3
+ readonly descriptor: SubagentDescriptor;
4
+ readonly prompt: string;
5
+ readonly capability: 'coding' | 'read-only';
6
+ }
7
+ export declare function discoverLocalSubagents(cwd: string, agentDir: string): Promise<readonly LocalSubagentDefinition[]>;
8
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/subagents/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAC;CAC7C;AAgCD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC,CAS7C"}