@falai/agent 4.0.0-alpha.11 → 4.0.0-alpha.13

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 (76) hide show
  1. package/dist/cjs/core/FlowSpec.d.ts +2 -0
  2. package/dist/cjs/core/FlowSpec.d.ts.map +1 -1
  3. package/dist/cjs/core/FlowSpec.js +26 -3
  4. package/dist/cjs/core/FlowSpec.js.map +1 -1
  5. package/dist/cjs/core/Migrate.d.ts.map +1 -1
  6. package/dist/cjs/core/Migrate.js +3 -1
  7. package/dist/cjs/core/Migrate.js.map +1 -1
  8. package/dist/cjs/core/Runner.d.ts +17 -1
  9. package/dist/cjs/core/Runner.d.ts.map +1 -1
  10. package/dist/cjs/core/Runner.js +178 -35
  11. package/dist/cjs/core/Runner.js.map +1 -1
  12. package/dist/cjs/core/Speak.d.ts.map +1 -1
  13. package/dist/cjs/core/Speak.js +3 -1
  14. package/dist/cjs/core/Speak.js.map +1 -1
  15. package/dist/cjs/types/flow.d.ts +15 -1
  16. package/dist/cjs/types/flow.d.ts.map +1 -1
  17. package/dist/cjs/types/session.d.ts +3 -1
  18. package/dist/cjs/types/session.d.ts.map +1 -1
  19. package/dist/cjs/utils/outcomes.d.ts +1 -0
  20. package/dist/cjs/utils/outcomes.d.ts.map +1 -1
  21. package/dist/cjs/utils/outcomes.js +1 -0
  22. package/dist/cjs/utils/outcomes.js.map +1 -1
  23. package/dist/cjs/utils/schema.d.ts +3 -3
  24. package/dist/cjs/utils/schema.d.ts.map +1 -1
  25. package/dist/cjs/utils/schema.js +4 -3
  26. package/dist/cjs/utils/schema.js.map +1 -1
  27. package/dist/core/FlowSpec.d.ts +2 -0
  28. package/dist/core/FlowSpec.d.ts.map +1 -1
  29. package/dist/core/FlowSpec.js +27 -4
  30. package/dist/core/FlowSpec.js.map +1 -1
  31. package/dist/core/Migrate.d.ts.map +1 -1
  32. package/dist/core/Migrate.js +3 -1
  33. package/dist/core/Migrate.js.map +1 -1
  34. package/dist/core/Runner.d.ts +17 -1
  35. package/dist/core/Runner.d.ts.map +1 -1
  36. package/dist/core/Runner.js +178 -35
  37. package/dist/core/Runner.js.map +1 -1
  38. package/dist/core/Speak.d.ts.map +1 -1
  39. package/dist/core/Speak.js +3 -1
  40. package/dist/core/Speak.js.map +1 -1
  41. package/dist/types/flow.d.ts +15 -1
  42. package/dist/types/flow.d.ts.map +1 -1
  43. package/dist/types/session.d.ts +3 -1
  44. package/dist/types/session.d.ts.map +1 -1
  45. package/dist/utils/outcomes.d.ts +1 -0
  46. package/dist/utils/outcomes.d.ts.map +1 -1
  47. package/dist/utils/outcomes.js +1 -0
  48. package/dist/utils/outcomes.js.map +1 -1
  49. package/dist/utils/schema.d.ts +3 -3
  50. package/dist/utils/schema.d.ts.map +1 -1
  51. package/dist/utils/schema.js +4 -3
  52. package/dist/utils/schema.js.map +1 -1
  53. package/docs/concepts/collection.md +40 -5
  54. package/docs/concepts/pipeline.md +6 -5
  55. package/docs/concepts/runs-and-waits.md +1 -1
  56. package/docs/guides/branching.md +3 -1
  57. package/docs/guides/flow-control.md +3 -1
  58. package/docs/migration/v3-to-v4.md +1 -1
  59. package/docs/reference/branches.md +1 -1
  60. package/docs/reference/fields.md +5 -3
  61. package/docs/reference/flow-spec.md +6 -3
  62. package/docs/reference/flow.md +8 -3
  63. package/docs/reference/outcomes.md +2 -1
  64. package/docs/reference/session.md +2 -0
  65. package/docs/reference/step.md +7 -4
  66. package/docs/rfc/v4-one-flow.md +2 -0
  67. package/examples/05-branches.ts +1 -1
  68. package/package.json +1 -1
  69. package/src/core/FlowSpec.ts +33 -5
  70. package/src/core/Migrate.ts +2 -1
  71. package/src/core/Runner.ts +167 -32
  72. package/src/core/Speak.ts +3 -1
  73. package/src/types/flow.ts +15 -1
  74. package/src/types/session.ts +3 -0
  75. package/src/utils/outcomes.ts +1 -0
  76. package/src/utils/schema.ts +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Migrate.d.ts","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAkB,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAKhF,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,GAAG,EAAE,MAAM;CAQd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,4EAA4E;IAC5E,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAqBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAiC7E;AAkDD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpF"}
1
+ {"version":3,"file":"Migrate.d.ts","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAkB,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAKhF,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,GAAG,EAAE,MAAM;CAQd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,4EAA4E;IAC5E,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAqBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAiC7E;AAmDD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpF"}
@@ -105,7 +105,7 @@ function checkRun(raw, index, bad) {
105
105
  const status = text("status");
106
106
  if (!RUN_STATUS.has(status))
107
107
  throw bad(`${at}.status is "${status}"`);
108
- const { stepId, hop, outcomes, input, waiting, suspendedAt } = raw;
108
+ const { stepId, hop, outcomes, input, waiting, suspendedAt, staying } = raw;
109
109
  if (stepId !== null && typeof stepId !== "string")
110
110
  throw bad(`${at}.stepId is ${describe(stepId)}, expected text or null`);
111
111
  if (!isWhole(hop))
@@ -139,6 +139,8 @@ function checkRun(raw, index, bad) {
139
139
  run.waiting = waiting;
140
140
  if (typeof suspendedAt === "string")
141
141
  run.suspendedAt = suspendedAt;
142
+ if (staying === true)
143
+ run.staying = true;
142
144
  return run;
143
145
  }
144
146
  // ── 3.x → 4 ─────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../src/core/Migrate.ts"],"names":[],"mappings":"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"}
@@ -130,6 +130,12 @@ export declare class Runner<C = unknown, D = unknown> {
130
130
  /** Validate a raw extracted value and write it; unknown or invalid values leave an outcome line instead. */
131
131
  private writeField;
132
132
  advance(turn: Turn<C, D>): Promise<TalkRequest<C, D> | IdleRequest<C, D> | null>;
133
+ /**
134
+ * Send the step's fixed question when this is its first ask: every field it collects still unknown, none asked yet,
135
+ * and the run not staying (a staying run answers the lead). The question counts as one ask of each field. False when
136
+ * the AI should phrase the ask instead.
137
+ */
138
+ private askFixed;
133
139
  /**
134
140
  * Everything Speak needs for this turn's one speaker. Instructions are agent,
135
141
  * then flow, then step (idle: agent, then idle), each already judged by its
@@ -146,14 +152,24 @@ export declare class Runner<C = unknown, D = unknown> {
146
152
  private peek;
147
153
  private reportMaxAsks;
148
154
  private follow;
149
- /** Start a child flow that holds the floor and moves in this same phase. */
155
+ /** Start a child flow that moves in this same phase. It inherits the floor when its parent held it, or when nobody did. */
150
156
  private chain;
151
157
  private jump;
152
158
  /** Entering a step is what mints a new visit, and with it new action and message keys (I4). */
153
159
  private enter;
160
+ /** `onEnd: 'stay'`: the run sits on its last talk step and answers every message from there, each answer a new visit and so a new key. */
161
+ private stayAt;
162
+ /**
163
+ * Where `stay` answers from: the talk step this run last took, so a branched flow stays on its own path. The flow's last talk step when the log names none.
164
+ * ponytail: read back from `run.outcomes`, which keeps 50 lines; a tail of 50+ lines after the talk step (a long polling loop) loses it and the run
165
+ * stays on the flow's last talk step. Upgrade: record the talk step on the run when it talks.
166
+ */
167
+ private stayStep;
154
168
  private finishFlow;
155
169
  private endRun;
156
170
  private park;
171
+ /** `resumeSuspended`, and on a message the resumed run's `if` branches are judged before it speaks, as the asker's are in Decide. */
172
+ private resume;
157
173
  /** When nobody asks, the most recently suspended run returns to asking. */
158
174
  private resumeSuspended;
159
175
  settle(turn: Turn<C, D>, outcome: SpeakOutcome | null): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Runner.d.ts","sourceRoot":"","sources":["../../src/core/Runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Runner.d.ts","sourceRoot":"","sources":["../../src/core/Runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAa,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpI,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAiD,MAAM,qBAAqB,CAAC;AAOpH,OAAO,KAAK,EAAY,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAqB1J,+CAA+C;AAC/C,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E,wFAAwF;AACxF,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC5C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,eAAe,EAAE,OAAO,CAAC;IACzB,6FAA6F;IAC7F,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,mGAAmG;IACnG,SAAS,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,KAAK,EAAE,GAAG,EAAE,CAAC;CACd;AA8ED,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAG9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEnB,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAMxD,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAazC,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,IAAI;IAkCZ,uHAAuH;IACvH,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,EAAE;IAU7D,OAAO,CAAC,MAAM;IA2Dd,iGAAiG;IACjG,OAAO,CAAC,iBAAiB;IAkBzB,mEAAmE;IACnE,OAAO,CAAC,OAAO;IA6Bf,iHAAiH;IACjH,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAiEhB,6GAA6G;IAC7G,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAQpB,yEAAyE;IACzE,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,OAAO;IAiBf,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAmDnE,wFAAwF;IACxF,OAAO,CAAC,SAAS;IAIjB,2DAA2D;IAC3D,OAAO,CAAC,QAAQ;IAMhB,sFAAsF;IACtF,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;IAYpB,8HAA8H;IAC9H,OAAO,CAAC,YAAY;IAWpB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IA0DnE,OAAO,CAAC,UAAU;IAkBlB,4GAA4G;IAC5G,OAAO,CAAC,UAAU;IAkBZ,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAsBtF;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAchB;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IA4B/F,OAAO,CAAC,OAAO;YAkBD,KAAK;YAML,IAAI;IAsClB,0HAA0H;IAC1H,OAAO,CAAC,YAAY;YAkBN,OAAO;IA4IrB,gEAAgE;IAChE,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,MAAM;IA4Bd,2HAA2H;IAC3H,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,IAAI;IAKZ,+FAA+F;IAC/F,OAAO,CAAC,KAAK;IAQb,0IAA0I;IAC1I,OAAO,CAAC,MAAM;IAMd;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAsClB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,IAAI;IAMZ,qIAAqI;IACrI,OAAO,CAAC,MAAM;IAUd,2EAA2E;IAC3E,OAAO,CAAC,eAAe;IAejB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC3E,OAAO,CAAC,WAAW;IAkCnB,kFAAkF;IAClF,OAAO,CAAC,SAAS;IAqBjB,kEAAkE;IAClE,OAAO,CAAC,OAAO;IASf,4FAA4F;IAC5F,OAAO,CAAC,UAAU;IAMlB,0FAA0F;IAC1F,OAAO,CAAC,YAAY;IAyBpB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAOxC"}
@@ -64,6 +64,15 @@ function defaultRepeat(kind) {
64
64
  function talkKind(step) {
65
65
  return step.collect?.length ? "collect" : "prompt";
66
66
  }
67
+ /** Everything a flow collects: its own `collect`, then each talk step's, once each. */
68
+ function flowFields(flow) {
69
+ const fields = new Set(flow.collect);
70
+ for (const step of flow.steps)
71
+ if (isTalk(step))
72
+ for (const field of step.collect ?? [])
73
+ fields.add(field);
74
+ return [...fields];
75
+ }
67
76
  function kindOf(step) {
68
77
  if (!step)
69
78
  return "if";
@@ -234,6 +243,9 @@ export class Runner {
234
243
  const branch = step.branches?.find((b) => "if" in b && this.holds(b.if, turn, run));
235
244
  const target = branch ? branch.then : step.else;
236
245
  this.outcome(turn, run, { kind: "wait", status: "ok", code: "replied", next: nextLabel(target) });
246
+ // The reply is this run's while it moves, so a stay it reaches answers it.
247
+ if (!turn.floorFromIngest)
248
+ turn.floorRunId = run.id;
237
249
  this.follow(turn, run, flow, step, target);
238
250
  this.takeFloor(turn, run);
239
251
  }
@@ -465,18 +477,28 @@ export class Runner {
465
477
  }
466
478
  const fields = {};
467
479
  const data = turn.session.data;
480
+ const harvestable = (field) => {
481
+ const def = this.options.fields[field];
482
+ return def !== undefined && !isKnown(data[field]) && extractMode(def) === "anywhere";
483
+ };
468
484
  for (const flow of [...(floorFlow ? [floorFlow] : []), ...eligible]) {
469
- for (const step of flow.steps) {
470
- if (!isTalk(step))
471
- continue;
472
- for (const field of step.collect ?? []) {
473
- const def = this.options.fields[field];
474
- if (def && !isKnown(data[field]) && extractMode(def) === "anywhere")
475
- fields[field] = def;
476
- }
477
- }
485
+ for (const field of flowFields(flow).filter(harvestable))
486
+ fields[field] = this.options.fields[field];
487
+ }
488
+ const judging = messageFlows.length > 0 || mentionFlows.length > 0 || branches.length > 0 || Object.keys(fields).length > 0;
489
+ // With nobody on the floor the catch-all may take this message, and an opening message often says the most. The
490
+ // fields its first step asks ride on that step's speak call, so alone they spend no call; a fixed question has no speak call.
491
+ // ponytail: "first step" is steps[0]; a catch-all that opens with a say or an if pays the call for that step's fields too.
492
+ const fallback = floorRun ? undefined : this.messageFlows(turn, (list) => list.length === 0)[0];
493
+ if (fallback) {
494
+ const first = fallback.steps[0];
495
+ const free = new Set(first && isTalk(first) && first.question === undefined ? first.collect : []);
496
+ const own = flowFields(fallback).filter(harvestable);
497
+ if (judging || own.some((field) => !free.has(field)))
498
+ for (const field of own)
499
+ fields[field] = this.options.fields[field];
478
500
  }
479
- if (!messageFlows.length && !mentionFlows.length && !branches.length && !Object.keys(fields).length)
501
+ if (!judging && !Object.keys(fields).length)
480
502
  return null;
481
503
  return {
482
504
  text: turn.what.text,
@@ -585,6 +607,9 @@ export class Runner {
585
607
  turn.floorRunId = run.id;
586
608
  }
587
609
  }
610
+ // Unless routing or Ingest moved it, the message is the asker's: written down, so a chain beside it cannot take it.
611
+ if (asker && !route && !turn.floorFromIngest)
612
+ turn.floorRunId = asker.id;
588
613
  for (const [field, raw] of Object.entries(understanding?.fields ?? {}))
589
614
  this.writeField(turn, field, raw);
590
615
  if (asker && turn.session.runs.includes(asker) && asker.status === "asking") {
@@ -595,7 +620,13 @@ export class Runner {
595
620
  }
596
621
  }
597
622
  fireBranch(turn, run, flow, step, understanding) {
598
- const hit = (branch, index) => "if" in branch ? this.holds(branch.if, turn, run) : understanding?.branches[`${run.id}/${step.id}/${index}`] === true;
623
+ // Staying, a run does not take an `if` branch back onto a path it has already run: the fact it tests is still true,
624
+ // so it would re-run that path on every message. A `when` branch is judged on each new message and always counts.
625
+ // ponytail: "already run" is the target's visit count, so an `if` restart (`{ step, clear }` to a visited step) never fires while staying; write it as a `when`.
626
+ const ran = (then) => typeof then === "string" ? then === "end" || (run.visits[then] ?? 0) > 0 : "step" in then && (run.visits[then.step] ?? 0) > 0;
627
+ const hit = (branch, index) => "if" in branch
628
+ ? !(run.staying && ran(branch.then)) && this.holds(branch.if, turn, run)
629
+ : understanding?.branches[`${run.id}/${step.id}/${index}`] === true;
599
630
  const index = (step.branches ?? []).findIndex(hit);
600
631
  if (index < 0)
601
632
  return;
@@ -625,10 +656,47 @@ export class Runner {
625
656
  async advance(turn) {
626
657
  if (turn.ignored)
627
658
  return null;
628
- this.resumeSuspended(turn);
659
+ this.resume(turn);
629
660
  turn.queue = [...turn.session.runs];
630
661
  await this.drain(turn);
631
- return this.speaker(turn);
662
+ // An asker that moved on without a word hands the message to the run it suspended, and that one to the next.
663
+ // Each pass takes a run off the suspended stack, so the stack's size bounds the loop.
664
+ for (let left = turn.session.runs.length; left > 0; left--) {
665
+ if (turn.what.kind !== "message" || turn.silenced !== undefined || turn.talk || turn.spokeBy.size > 0)
666
+ break;
667
+ const resumed = this.resume(turn);
668
+ if (!resumed)
669
+ break;
670
+ turn.queue.push(resumed);
671
+ await this.drain(turn);
672
+ }
673
+ const speaker = this.speaker(turn);
674
+ if (speaker && !("idle" in speaker) && this.askFixed(turn, speaker)) {
675
+ turn.talk = undefined;
676
+ return null;
677
+ }
678
+ return speaker;
679
+ }
680
+ /**
681
+ * Send the step's fixed question when this is its first ask: every field it collects still unknown, none asked yet,
682
+ * and the run not staying (a staying run answers the lead). The question counts as one ask of each field. False when
683
+ * the AI should phrase the ask instead.
684
+ */
685
+ askFixed(turn, { run, step, pending }) {
686
+ const { question, collect = [] } = step;
687
+ if (question === undefined || run.staying)
688
+ return false;
689
+ if (pending.length !== collect.length || pending.some((field) => (run.asked[field] ?? 0) > 0))
690
+ return false;
691
+ const key = this.stepKey(run, step);
692
+ turn.messages.push({ text: render(question, this.scope(turn, run)), kind: "verbatim", afterMs: turn.afterMs, key, runId: run.id, stepId: step.id });
693
+ turn.afterMs = 0;
694
+ turn.spokeBy.add(run.id);
695
+ turn.spoke = true;
696
+ for (const field of pending)
697
+ run.asked[field] = (run.asked[field] ?? 0) + 1;
698
+ this.outcome(turn, run, { kind: "collect", status: "ok", key, code: "asked-fixed", stepId: step.id });
699
+ return true;
632
700
  }
633
701
  /**
634
702
  * Everything Speak needs for this turn's one speaker. Instructions are agent,
@@ -699,6 +767,11 @@ export class Runner {
699
767
  }
700
768
  if (!this.premiseHolds(turn, run, flow))
701
769
  return;
770
+ // The flow was edited off 'stay' after this run finished its steps: its new `onEnd` decides now.
771
+ if (run.staying && flow.onEnd !== "stay") {
772
+ this.finishFlow(turn, run, flow);
773
+ return;
774
+ }
702
775
  const resuming = run.status === "asking";
703
776
  run.status = "running";
704
777
  if (run.stepId === null) {
@@ -749,7 +822,9 @@ export class Runner {
749
822
  let pending = [];
750
823
  if (step.collect?.length) {
751
824
  pending = pendingFields(step, data, run.asked);
752
- if (!pending.length) {
825
+ // A `stay` run answers even with nothing left to collect: answering is what it stays for. It only runs on a message
826
+ // (asking runs sit out wakes and events), and on a silenced one the check below keeps it asking.
827
+ if (!pending.length && !run.staying) {
753
828
  this.reportMaxAsks(turn, run, step);
754
829
  this.outcome(turn, run, resuming
755
830
  ? { kind, status: "ok", key, next: nextLabel(step.then) }
@@ -772,8 +847,11 @@ export class Runner {
772
847
  }
773
848
  }
774
849
  run.status = "asking";
850
+ // Reached after Speak (settle's drain), a talk step waits for the next message; a fixed question costs no call, so it goes out now, as a say would.
775
851
  if (!turn.speakDone)
776
852
  turn.talk = { run, flow, step, pending };
853
+ else
854
+ this.askFixed(turn, { run, flow, step, pending });
777
855
  return;
778
856
  }
779
857
  if (isSay(step)) {
@@ -916,18 +994,21 @@ export class Runner {
916
994
  }
917
995
  if ("step" in target) {
918
996
  const data = turn.session.data;
919
- for (const field of target.clear ?? [])
997
+ // Forgetting a field means asking for it from scratch: its ask count goes too, so a fixed question goes out again.
998
+ for (const field of target.clear ?? []) {
920
999
  delete data[field];
1000
+ delete run.asked[field];
1001
+ }
921
1002
  this.jump(turn, run, flow, target.step);
922
1003
  return;
923
1004
  }
924
1005
  const childId = render(target.flow, this.scope(turn, run));
925
1006
  const key = this.stepKey(run, step);
926
1007
  this.endRun(turn, run, "flow");
927
- this.chain(turn, childId, key, target.input ?? run.input, run.hop + 1);
1008
+ this.chain(turn, run, childId, key, target.input ?? run.input, run.hop + 1);
928
1009
  }
929
- /** Start a child flow that holds the floor and moves in this same phase. */
930
- chain(turn, flowId, key, input, hop, keepData = false) {
1010
+ /** Start a child flow that moves in this same phase. It inherits the floor when its parent held it, or when nobody did. */
1011
+ chain(turn, parent, flowId, key, input, hop, keepData = false) {
931
1012
  const child = this.flows.get(flowId);
932
1013
  if (!child) {
933
1014
  turn.skipped.push({ flowId, anchor: turn.session.id, triggerKey: key, code: "flow-gone", message: OUTCOME_MESSAGES["flow-gone"] });
@@ -936,9 +1017,11 @@ export class Runner {
936
1017
  const run = this.startRun(turn, child, "flow", key, { payload: input, hop, keepData });
937
1018
  if (!run)
938
1019
  return;
939
- turn.floorRunId = run.id;
940
- if (turn.ingesting)
941
- turn.floorFromIngest = true;
1020
+ if (turn.floorRunId === undefined || turn.floorRunId === parent.id) {
1021
+ turn.floorRunId = run.id;
1022
+ if (turn.ingesting)
1023
+ turn.floorFromIngest = true;
1024
+ }
942
1025
  turn.queue.push(run);
943
1026
  }
944
1027
  jump(turn, run, flow, stepId) {
@@ -953,14 +1036,54 @@ export class Runner {
953
1036
  run.visits[stepId] = (run.visits[stepId] ?? 0) + 1;
954
1037
  run.status = "running";
955
1038
  delete run.waiting;
1039
+ delete run.staying;
1040
+ }
1041
+ /** `onEnd: 'stay'`: the run sits on its last talk step and answers every message from there, each answer a new visit and so a new key. */
1042
+ stayAt(run, step) {
1043
+ this.enter(run, step.id);
1044
+ run.staying = true;
1045
+ run.status = "asking";
1046
+ }
1047
+ /**
1048
+ * Where `stay` answers from: the talk step this run last took, so a branched flow stays on its own path. The flow's last talk step when the log names none.
1049
+ * ponytail: read back from `run.outcomes`, which keeps 50 lines; a tail of 50+ lines after the talk step (a long polling loop) loses it and the run
1050
+ * stays on the flow's last talk step. Upgrade: record the talk step on the run when it talks.
1051
+ */
1052
+ stayStep(run, flow) {
1053
+ for (let i = run.outcomes.length - 1; i >= 0; i--) {
1054
+ const { kind, stepId } = run.outcomes[i];
1055
+ const step = kind === "prompt" || kind === "collect" ? this.stepOf(flow, stepId ?? null) : undefined;
1056
+ if (step && isTalk(step))
1057
+ return step;
1058
+ }
1059
+ return [...flow.steps].reverse().find(isTalk);
956
1060
  }
957
1061
  finishFlow(turn, run, flow) {
958
1062
  const onEnd = flow.onEnd ?? "end";
959
1063
  const last = flow.steps[flow.steps.length - 1];
960
- if (onEnd === "stay" && last) {
961
- // "repete o último passo": the run stays live at its last step, re-entered so the repetition mints a new key, and runs it on the next message.
962
- this.enter(run, last.id);
963
- run.status = "asking";
1064
+ const stay = onEnd === "stay" ? this.stayStep(run, flow) : undefined;
1065
+ if (stay) {
1066
+ // The steps after it ran once, on the way here; staying, it only answers.
1067
+ this.stayAt(run, stay);
1068
+ // One asker at a time. A run the lead's message went to holds the conversation and suspends the other asker;
1069
+ // any other run waits behind that asker and resumes when it is done.
1070
+ const others = turn.session.runs.filter((r) => r !== run && r.status === "asking");
1071
+ if (others.length && !(turn.what.kind === "message" && turn.floorRunId === run.id)) {
1072
+ run.status = "suspended";
1073
+ run.suspendedAt = turn.nowIso;
1074
+ return;
1075
+ }
1076
+ for (const other of others) {
1077
+ other.status = "suspended";
1078
+ other.suspendedAt = turn.nowIso;
1079
+ if (turn.talk?.run === other)
1080
+ turn.talk = undefined;
1081
+ }
1082
+ // A message nothing has answered yet gets its answer now. Reached in Ingest, the run stays asking: Decide judges its
1083
+ // branches as the asker's, and it answers when it moves.
1084
+ if (!turn.ingesting && turn.what.kind === "message" && turn.silenced === undefined && !turn.speakDone && turn.spokeBy.size === 0) {
1085
+ run.status = "running";
1086
+ }
964
1087
  return;
965
1088
  }
966
1089
  if (onEnd === "reset" && last) {
@@ -968,7 +1091,7 @@ export class Runner {
968
1091
  // It is a chain into itself, so it costs a hop: a code-only flow that resets forever stops at the hop cap instead of spinning.
969
1092
  const key = this.stepKey(run, last);
970
1093
  this.endRun(turn, run, "reset");
971
- this.chain(turn, flow.id, key, run.input, run.hop + 1, true);
1094
+ this.chain(turn, run, flow.id, key, run.input, run.hop + 1, true);
972
1095
  return;
973
1096
  }
974
1097
  this.endRun(turn, run, "end");
@@ -990,10 +1113,21 @@ export class Runner {
990
1113
  run.waiting = { ...waiting, until: at.toISOString(), setAt: turn.nowIso };
991
1114
  turn.schedule.push({ key: waiting.key, at });
992
1115
  }
1116
+ /** `resumeSuspended`, and on a message the resumed run's `if` branches are judged before it speaks, as the asker's are in Decide. */
1117
+ resume(turn) {
1118
+ const run = this.resumeSuspended(turn);
1119
+ if (run && turn.what.kind === "message") {
1120
+ const flow = this.flows.get(run.flowId);
1121
+ const step = flow && this.stepOf(flow, run.stepId);
1122
+ if (flow && step && isTalk(step))
1123
+ this.fireBranch(turn, run, flow, step, null);
1124
+ }
1125
+ return run;
1126
+ }
993
1127
  /** When nobody asks, the most recently suspended run returns to asking. */
994
1128
  resumeSuspended(turn) {
995
1129
  if (this.asker(turn))
996
- return;
1130
+ return undefined;
997
1131
  const suspendedAt = (r) => r.suspendedAt ?? r.startedAt;
998
1132
  const next = turn.session.runs
999
1133
  .filter((r) => r.status === "suspended")
@@ -1002,6 +1136,7 @@ export class Runner {
1002
1136
  next.status = "asking";
1003
1137
  delete next.suspendedAt;
1004
1138
  }
1139
+ return next;
1005
1140
  }
1006
1141
  // ── Settle: the one applier after Speak (design §4.7) ─────────────────
1007
1142
  async settle(turn, outcome) {
@@ -1056,16 +1191,24 @@ export class Runner {
1056
1191
  this.outcome(turn, run, { kind: talkKind(step), status: "ok", key, llmCalls: spoken.llmCalls, stepId: step.id });
1057
1192
  if (!turn.session.runs.includes(run))
1058
1193
  return;
1059
- if (step.collect?.length) {
1060
- const pending = pendingFields(step, turn.session.data, run.asked);
1061
- if (pending.length) {
1062
- for (const field of pending)
1063
- run.asked[field] = (run.asked[field] ?? 0) + 1;
1064
- run.status = "asking";
1065
- return;
1194
+ const pending = step.collect?.length ? pendingFields(step, turn.session.data, run.asked) : [];
1195
+ for (const field of pending)
1196
+ run.asked[field] = (run.asked[field] ?? 0) + 1;
1197
+ if (run.staying) {
1198
+ // Each answer is a new visit, so a new key, even while a field is still pending; that field's max-asks is reported once, when it gets there.
1199
+ const maxAsks = step.maxAsks ?? DEFAULT_MAX_ASKS;
1200
+ for (const field of pending) {
1201
+ if (run.asked[field] === maxAsks)
1202
+ this.outcome(turn, run, { kind: "collect", status: "skipped", key, code: "max-asks", detail: field });
1066
1203
  }
1067
- this.reportMaxAsks(turn, run, step);
1204
+ this.stayAt(run, step);
1205
+ return;
1206
+ }
1207
+ if (pending.length) {
1208
+ run.status = "asking";
1209
+ return;
1068
1210
  }
1211
+ this.reportMaxAsks(turn, run, step);
1069
1212
  run.status = "running";
1070
1213
  this.follow(turn, run, flow, step, step.then);
1071
1214
  if (turn.session.runs.includes(run) && run.status === "running")