@faapi/faapi 6.4.1 → 6.5.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/dist/cli/index.js CHANGED
@@ -6957,6 +6957,40 @@ function createTaskHandleStore() {
6957
6957
  }
6958
6958
  };
6959
6959
  }
6960
+ function createTaskRegistriesView(registries) {
6961
+ return {
6962
+ agent: {
6963
+ getAgent: (name) => registries.agent.getAgent(name),
6964
+ getAgentEntry: (name) => registries.agent.getAgentEntry(name),
6965
+ listAgents: () => registries.agent.listAgents(),
6966
+ asTool: (name) => registries.agent.asTool(name),
6967
+ resolveAgentTools: (name) => registries.agent.resolveAgentTools(name),
6968
+ resolveSubAgents: (name) => registries.agent.resolveSubAgents(name)
6969
+ },
6970
+ tool: {
6971
+ get: (name) => registries.tool.get(name),
6972
+ list: () => registries.tool.list()
6973
+ },
6974
+ skill: {
6975
+ get: (name) => registries.skill.get(name),
6976
+ list: () => registries.skill.list()
6977
+ }
6978
+ };
6979
+ }
6980
+ function createEmptyTaskRegistriesView() {
6981
+ return {
6982
+ agent: {
6983
+ getAgent: () => void 0,
6984
+ getAgentEntry: () => void 0,
6985
+ listAgents: () => [],
6986
+ asTool: () => void 0,
6987
+ resolveAgentTools: () => [],
6988
+ resolveSubAgents: () => []
6989
+ },
6990
+ tool: { get: () => void 0, list: () => [] },
6991
+ skill: { get: () => void 0, list: () => [] }
6992
+ };
6993
+ }
6960
6994
  function createAppRegistries() {
6961
6995
  const tool = createToolRegistry();
6962
6996
  const agent = createAgentRegistry(tool);
@@ -8330,6 +8364,8 @@ function buildWrapperSource(moduleUrl) {
8330
8364
  import { parentPort } from 'node:worker_threads';
8331
8365
  import * as mod from '${moduleUrl}';
8332
8366
 
8367
+ ${BUILD_VIEW_SOURCE}
8368
+
8333
8369
  const run = mod.run;
8334
8370
  if (typeof run !== 'function') {
8335
8371
  parentPort.postMessage({ type: 'error', message: 'Task module has no run export' });
@@ -8344,7 +8380,8 @@ if (typeof run !== 'function') {
8344
8380
  controller = new AbortController();
8345
8381
  const { payload, taskCtx } = msg;
8346
8382
  try {
8347
- const result = await run(payload, { ...taskCtx, signal: controller.signal });
8383
+ const registries = buildRegistriesView(msg.registries);
8384
+ const result = await run(payload, { ...taskCtx, signal: controller.signal, registries });
8348
8385
  parentPort.postMessage({ type: 'done', result });
8349
8386
  } catch (err) {
8350
8387
  parentPort.postMessage({
@@ -8442,7 +8479,8 @@ async function runTaskInWorker(options) {
8442
8479
  worker.postMessage({
8443
8480
  type: "run",
8444
8481
  payload,
8445
- taskCtx: { config: safeConfig(taskCtx.config), job: taskCtx.job }
8482
+ taskCtx: { config: safeConfig(taskCtx.config), job: taskCtx.job },
8483
+ registries: options.registries
8446
8484
  });
8447
8485
  } catch (err) {
8448
8486
  finish(
@@ -8453,7 +8491,7 @@ async function runTaskInWorker(options) {
8453
8491
  }
8454
8492
  });
8455
8493
  }
8456
- var KILL_GRACE_MS, TaskCancelledError;
8494
+ var KILL_GRACE_MS, TaskCancelledError, BUILD_VIEW_SOURCE;
8457
8495
  var init_taskWorker = __esm({
8458
8496
  "src/task/taskWorker.ts"() {
8459
8497
  "use strict";
@@ -8464,6 +8502,61 @@ var init_taskWorker = __esm({
8464
8502
  this.name = "TaskCancelledError";
8465
8503
  }
8466
8504
  };
8505
+ BUILD_VIEW_SOURCE = `
8506
+ function buildRegistriesView(snapshot) {
8507
+ var agents = new Map(((snapshot && snapshot.agents) || []).map(function (a) { return [a.name, a]; }));
8508
+ var tools = new Map(((snapshot && snapshot.tools) || []).map(function (t) { return [t.name, t]; }));
8509
+ var skills = new Map(((snapshot && snapshot.skills) || []).map(function (s) { return [s.name, s]; }));
8510
+ return {
8511
+ agent: {
8512
+ getAgent: function (name) { return agents.get(name); },
8513
+ getAgentEntry: function (name) { return agents.get(name); },
8514
+ listAgents: function () { return Array.from(agents.values()); },
8515
+ asTool: function (name) {
8516
+ var agent = agents.get(name);
8517
+ if (!agent) return undefined;
8518
+ return {
8519
+ kind: 'agent',
8520
+ name: 'agent.' + agent.name,
8521
+ agentName: agent.name,
8522
+ description: agent.description,
8523
+ metadata: agent,
8524
+ };
8525
+ },
8526
+ resolveAgentTools: function (name) {
8527
+ var agent = agents.get(name);
8528
+ var result = new Map();
8529
+ if (agent && agent.tools) {
8530
+ agent.tools.forEach(function (toolName) {
8531
+ var resolved = tools.get(toolName);
8532
+ if (resolved) result.set(resolved.name, resolved);
8533
+ });
8534
+ }
8535
+ return Array.from(result.values());
8536
+ },
8537
+ resolveSubAgents: function (name) {
8538
+ var agent = agents.get(name);
8539
+ var result = [];
8540
+ if (agent && agent.agents) {
8541
+ agent.agents.forEach(function (subName) {
8542
+ var sub = agents.get(subName);
8543
+ if (sub) result.push(sub);
8544
+ });
8545
+ }
8546
+ return result;
8547
+ },
8548
+ },
8549
+ tool: {
8550
+ get: function (name) { return tools.get(name); },
8551
+ list: function () { return Array.from(tools.values()); },
8552
+ },
8553
+ skill: {
8554
+ get: function (name) { return skills.get(name); },
8555
+ list: function () { return Array.from(skills.values()); },
8556
+ },
8557
+ };
8558
+ }
8559
+ `;
8467
8560
  }
8468
8561
  });
8469
8562
 
@@ -8471,6 +8564,7 @@ var init_taskWorker = __esm({
8471
8564
  import path25 from "path";
8472
8565
  function createTaskQueue(deps) {
8473
8566
  const { registry, rootDir, driver } = deps;
8567
+ const registriesView = deps.registries ?? createEmptyTaskRegistriesView();
8474
8568
  const records = /* @__PURE__ */ new Map();
8475
8569
  const moduleCache2 = /* @__PURE__ */ new Map();
8476
8570
  const schemaCache = /* @__PURE__ */ new Map();
@@ -8494,6 +8588,13 @@ function createTaskQueue(deps) {
8494
8588
  throw new Error(`[faapi] Unknown task "${name}". Registered tasks: ${known}`);
8495
8589
  }
8496
8590
  }
8591
+ function snapshotRegistries() {
8592
+ return {
8593
+ agents: registriesView.agent.listAgents().map((core) => registriesView.agent.getAgentEntry(core.name)).filter((entry) => entry !== void 0),
8594
+ tools: registriesView.tool.list(),
8595
+ skills: registriesView.skill.list()
8596
+ };
8597
+ }
8497
8598
  async function validatePayload(name, payload) {
8498
8599
  if (!schemaCache.has(name)) {
8499
8600
  const meta = registry.get(name);
@@ -8540,6 +8641,7 @@ function createTaskQueue(deps) {
8540
8641
  config: deps.config,
8541
8642
  job: { id: job.id, name: job.name, attempt: job.attempt }
8542
8643
  },
8644
+ registries: snapshotRegistries(),
8543
8645
  timeoutMs: meta.timeoutMs,
8544
8646
  externalSignal: job.signal
8545
8647
  });
@@ -8555,7 +8657,8 @@ function createTaskQueue(deps) {
8555
8657
  const taskCtx = {
8556
8658
  signal: job.signal,
8557
8659
  config: deps.config,
8558
- job: { id: job.id, name: job.name, attempt: job.attempt }
8660
+ job: { id: job.id, name: job.name, attempt: job.attempt },
8661
+ registries: registriesView
8559
8662
  };
8560
8663
  result = await mod.run(job.payload, taskCtx);
8561
8664
  }
@@ -8702,6 +8805,7 @@ var init_taskQueue = __esm({
8702
8805
  "use strict";
8703
8806
  init_httpErrors();
8704
8807
  init_taskWorker();
8808
+ init_registries();
8705
8809
  }
8706
8810
  });
8707
8811
 
@@ -9069,6 +9173,7 @@ async function createAppBase(options) {
9069
9173
  registry: registries.task,
9070
9174
  rootDir,
9071
9175
  config,
9176
+ registries: createTaskRegistriesView(registries),
9072
9177
  driver: taskDriver,
9073
9178
  onFailed: config?.task?.onFailed
9074
9179
  });