@felan-ai/agent-core 0.9.5 → 0.10.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.
Files changed (43) hide show
  1. package/README.md +15 -13
  2. package/dist/classifier/error.d.ts +5 -0
  3. package/dist/classifier/error.d.ts.map +1 -0
  4. package/dist/classifier/error.js +9 -0
  5. package/dist/classifier/error.js.map +1 -0
  6. package/dist/classifier/index.d.ts +2 -2
  7. package/dist/classifier/index.d.ts.map +1 -1
  8. package/dist/classifier/index.js +1 -1
  9. package/dist/classifier/index.js.map +1 -1
  10. package/dist/classifier/pi-classifier.d.ts +12 -0
  11. package/dist/classifier/pi-classifier.d.ts.map +1 -0
  12. package/dist/classifier/pi-classifier.js +69 -0
  13. package/dist/classifier/pi-classifier.js.map +1 -0
  14. package/dist/classifier/preflight.d.ts +8 -0
  15. package/dist/classifier/preflight.d.ts.map +1 -0
  16. package/dist/classifier/{jev/preflight.js → preflight.js} +4 -4
  17. package/dist/classifier/preflight.js.map +1 -0
  18. package/dist/classifier/types.d.ts +26 -14
  19. package/dist/classifier/types.d.ts.map +1 -1
  20. package/dist/classifier/validation.d.ts +8 -0
  21. package/dist/classifier/validation.d.ts.map +1 -0
  22. package/dist/classifier/validation.js +122 -0
  23. package/dist/classifier/validation.js.map +1 -0
  24. package/dist/dynamic-thinking/selection.js +2 -2
  25. package/dist/dynamic-thinking/selection.js.map +1 -1
  26. package/dist/session.js +2 -2
  27. package/dist/session.js.map +1 -1
  28. package/package.json +4 -4
  29. package/dist/classifier/jev/classifier.d.ts +0 -12
  30. package/dist/classifier/jev/classifier.d.ts.map +0 -1
  31. package/dist/classifier/jev/classifier.js +0 -79
  32. package/dist/classifier/jev/classifier.js.map +0 -1
  33. package/dist/classifier/jev/client.d.ts +0 -62
  34. package/dist/classifier/jev/client.d.ts.map +0 -1
  35. package/dist/classifier/jev/client.js +0 -321
  36. package/dist/classifier/jev/client.js.map +0 -1
  37. package/dist/classifier/jev/credentials.d.ts +0 -20
  38. package/dist/classifier/jev/credentials.d.ts.map +0 -1
  39. package/dist/classifier/jev/credentials.js +0 -53
  40. package/dist/classifier/jev/credentials.js.map +0 -1
  41. package/dist/classifier/jev/preflight.d.ts +0 -8
  42. package/dist/classifier/jev/preflight.d.ts.map +0 -1
  43. package/dist/classifier/jev/preflight.js.map +0 -1
package/README.md CHANGED
@@ -52,18 +52,19 @@ symlink escapes, and cannot remove its root. Workspace path access excludes
52
52
  agent storage, while host path access lets ordinary operations inspect both
53
53
  storage scopes. Storage handles also support `appendFile` for host log files.
54
54
  Every runtime has a structured `logger`; hosts inject the destination. Runtimes
55
- may also expose an optional `classifier` capability. The Jev classifier client
56
- is an internal implementation detail; the public provider-specific surface is
57
- the high-level `createJevClassifier` factory. Hosts own credential discovery
58
- and decide whether to inject it.
59
-
60
- The provider-neutral classifier supports the existing structured Choice
61
- judgment and an additive probability-of-yes judgment for independently scoring
62
- multiple conditions. Jev implements the latter with its Noul primitive; Agent
63
- Core does not expose Jev transport types through this contract.
64
-
65
- In root sessions, Agent Core coordinates one short initial-turn wait inside its
66
- Jev classifier; later decisions and other classifier implementations retain
55
+ may also expose an optional `classifier` capability. Its single
56
+ `classify(state, questions, signal)` operation supports discriminated `choice`,
57
+ `bool`, and `score` questions and answers. `canEvaluate` is an optional admission
58
+ helper for bounded evidence packing, not a second inference operation.
59
+ `createPiClassifier(modelRuntime, model)` delegates requests to Pi's native
60
+ `classify`; hosts select an authenticated catalog model and own credentials.
61
+ The bridge validates JSON-object state and answers, packs complete question
62
+ sets against the existing byte budgets, and maps native usage metadata. Unknown
63
+ catalog pricing is not reported as verified free inference. There is no owned
64
+ HTTP client or environment-key discovery in Agent Core.
65
+
66
+ In root sessions, Agent Core coordinates one shared 2-second initial-turn wait
67
+ inside its managed Pi-backed classifier; later decisions and custom implementations retain
67
68
  their normal timing. `collectClassifierSessionEvidence` converts the active Pi session projection
68
69
  into bounded conversation and correlated tool-call metadata for classifiers.
69
70
  It handles branch/compaction summaries, omits images, raw thinking and tool
@@ -86,7 +87,8 @@ API-equivalent estimate for any supported model's automatic `high` → `low` or
86
87
  first assistant response includes reasoning-token usage. It estimates 5%
87
88
  extra reasoning output at `high`, keeps observed input, cache and visible-output
88
89
  usage unchanged, and subtracts reported classifier
89
- cost. No change, a return to `high`, other models/levels, missing usage, or a
90
+ cost. Missing classifier pricing leaves that overhead unknown; estimates are
91
+ not a complete bill. No change, a return to `high`, other models/levels, missing usage, or a
90
92
  failed response produces no measurement. The unvalidated cross-model
91
93
  assumption and quality caveats are in [the public benchmark notes](../../docs/benchmarks/dynamic-thinking-effort.md).
92
94
 
@@ -0,0 +1,5 @@
1
+ export declare class ClassifierError extends Error {
2
+ readonly code: 'invalid_request' | 'response_invalid' | 'request_failed' | 'timeout' | 'aborted';
3
+ constructor(code: ClassifierError['code'], message: string);
4
+ }
5
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/classifier/error.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;gBAErF,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK3D"}
@@ -0,0 +1,9 @@
1
+ export class ClassifierError extends Error {
2
+ code;
3
+ constructor(code, message) {
4
+ super(message);
5
+ this.name = 'ClassifierError';
6
+ this.code = code;
7
+ }
8
+ }
9
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/classifier/error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAoF;IAEjG,YAAY,IAA6B,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- export { createJevClassifier } from './jev/classifier.js';
1
+ export { createPiClassifier } from './pi-classifier.js';
2
2
  export { collectClassifierSessionEvidence, sanitizeClassifierText } from './session-evidence.js';
3
3
  export type { ClassifierSessionEvidence, ClassifierSessionEvidenceLimits } from './session-evidence.js';
4
- export type { Classifier, ClassifierAnswer, ClassifierAnswers, ClassifierEvaluationMetadata, ClassifierQuestion, ClassifierQuestions, ClassifierProbabilityAnswer, ClassifierProbabilityAnswers, ClassifierProbabilityQuestion, ClassifierProbabilityQuestions, ClassifierUsage, } from './types.js';
4
+ export type { Classifier, ClassifierAnswer, ClassifierAnswers, ClassifierBoolAnswer, ClassifierBoolQuestion, ClassifierChoiceAnswer, ClassifierChoiceQuestion, ClassifierEvaluationMetadata, ClassifierQuestion, ClassifierQuestions, ClassifierScoreAnswer, ClassifierScoreQuestion, ClassifierUsage, } from './types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classifier/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjG,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACxG,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classifier/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjG,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACxG,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -1,3 +1,3 @@
1
- export { createJevClassifier } from './jev/classifier.js';
1
+ export { createPiClassifier } from './pi-classifier.js';
2
2
  export { collectClassifierSessionEvidence, sanitizeClassifierText } from './session-evidence.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classifier/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classifier/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ClassifierApi, ClassifierModel } from '@earendil-works/pi-ai';
2
+ import type { ModelRuntime } from '@earendil-works/pi-coding-agent';
3
+ import type { Logger } from '../logger.js';
4
+ import type { Classifier } from './types.js';
5
+ export declare function attachClassifierPreflight(classifier: Classifier, logger: Logger): {
6
+ startNextTurn(): void;
7
+ finishPreflight(): void;
8
+ dispose(): void;
9
+ run<T>(decision: string, work: (signal: AbortSignal) => Promise<T>, signal?: AbortSignal): Promise<T>;
10
+ } | undefined;
11
+ export declare function createPiClassifier(models: Pick<ModelRuntime, 'classify'>, model: ClassifierModel<ClassifierApi>): Classifier;
12
+ //# sourceMappingURL=pi-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-classifier.d.ts","sourceRoot":"","sources":["../../src/classifier/pi-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAsC,MAAM,YAAY,CAAC;AAMjF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;;;;;cAK/E;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EACtC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,GACpC,UAAU,CA8CZ"}
@@ -0,0 +1,69 @@
1
+ import { ClassifierError } from './error.js';
2
+ import { createClassifierPreflight } from './preflight.js';
3
+ import { prepareClassifierRequest, validateClassifierAnswers } from './validation.js';
4
+ const preflights = new WeakMap();
5
+ const managedClassifiers = new WeakSet();
6
+ export function attachClassifierPreflight(classifier, logger) {
7
+ if (!managedClassifiers.has(classifier))
8
+ return undefined;
9
+ const preflight = createClassifierPreflight(logger);
10
+ preflights.set(classifier, preflight);
11
+ return preflight;
12
+ }
13
+ export function createPiClassifier(models, model) {
14
+ const classifier = {
15
+ canEvaluate(state, questions) {
16
+ try {
17
+ prepareClassifierRequest(model.id, state, questions);
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ },
24
+ async classify(state, questions, signal) {
25
+ const started = Date.now();
26
+ const run = async (activeSignal) => {
27
+ const request = prepareClassifierRequest(model.id, state, questions);
28
+ const answers = Object.create(null);
29
+ const usage = { requests: 0 };
30
+ for (const batch of request.batches) {
31
+ if (activeSignal?.aborted)
32
+ throw new ClassifierError('aborted', 'Classifier request was aborted');
33
+ let result;
34
+ try {
35
+ result = await models.classify(model, { state: request.state, questions: batch }, {
36
+ ...(activeSignal === undefined ? {} : { signal: activeSignal }), timeoutMs: 20_000, maxRetries: 0,
37
+ });
38
+ }
39
+ catch {
40
+ throw new ClassifierError(activeSignal?.aborted ? 'aborted' : 'request_failed', 'Classifier request failed');
41
+ }
42
+ if (activeSignal?.aborted || result.stopReason === 'aborted') {
43
+ throw new ClassifierError('aborted', 'Classifier request was aborted');
44
+ }
45
+ if (result.stopReason !== 'stop')
46
+ throw new ClassifierError('request_failed', 'Classifier request failed');
47
+ Object.assign(answers, validateClassifierAnswers(batch, result.answers));
48
+ usage.requests += 1;
49
+ if (result.usage) {
50
+ addUsage(usage, 'inputTokens', result.usage.input);
51
+ addUsage(usage, 'outputTokens', result.usage.output);
52
+ if (model.cost.input > 0 || model.cost.output > 0)
53
+ addUsage(usage, 'costUsd', result.usage.cost.total);
54
+ }
55
+ }
56
+ return { answers, metadata: { provider: model.provider, model: model.id, usage, elapsedMs: Date.now() - started } };
57
+ };
58
+ const preflight = preflights.get(classifier);
59
+ return preflight ? preflight.run(Object.keys(questions).join(','), run, signal) : run(signal);
60
+ },
61
+ };
62
+ managedClassifiers.add(classifier);
63
+ return classifier;
64
+ }
65
+ function addUsage(usage, key, value) {
66
+ if (Number.isFinite(value) && value >= 0)
67
+ usage[key] = (usage[key] ?? 0) + value;
68
+ }
69
+ //# sourceMappingURL=pi-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-classifier.js","sourceRoot":"","sources":["../../src/classifier/pi-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Logger } from '../logger.js';
2
+ export declare function createClassifierPreflight(logger: Logger): {
3
+ startNextTurn(): void;
4
+ finishPreflight(): void;
5
+ dispose(): void;
6
+ run<T>(decision: string, work: (signal: AbortSignal) => Promise<T>, signal?: AbortSignal): Promise<T>;
7
+ };
8
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/classifier/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM;;;;QA4B1C,CAAC,YAAY,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;EA8B9G"}
@@ -1,6 +1,6 @@
1
- import { JevClientError } from './client.js';
1
+ import { ClassifierError } from './error.js';
2
2
  const WAIT_MS = 2_000;
3
- export function createJevPreflight(logger) {
3
+ export function createClassifierPreflight(logger) {
4
4
  const log = logger.child({ component: 'classifier-preflight' });
5
5
  let enabled = false;
6
6
  let turn;
@@ -27,7 +27,7 @@ export function createJevPreflight(logger) {
27
27
  enabled = false;
28
28
  clear();
29
29
  },
30
- async evaluate(decision, work, signal) {
30
+ async run(decision, work, signal) {
31
31
  if (!enabled)
32
32
  return work(signal ?? new AbortController().signal);
33
33
  if (!turn) {
@@ -39,7 +39,7 @@ export function createJevPreflight(logger) {
39
39
  const combined = signal ? AbortSignal.any([current.controller.signal, signal]) : current.controller.signal;
40
40
  let onAbort;
41
41
  const aborted = new Promise((_resolve, reject) => {
42
- onAbort = () => reject(new JevClientError(signal?.aborted ? 'aborted' : 'timeout', signal?.aborted ? 'Jev request was aborted' : 'Jev preflight expired'));
42
+ onAbort = () => reject(new ClassifierError(signal?.aborted ? 'aborted' : 'timeout', signal?.aborted ? 'Classifier request was aborted' : 'Classifier preflight expired'));
43
43
  if (combined.aborted)
44
44
  onAbort();
45
45
  else
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/classifier/preflight.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,40 @@
1
- export interface ClassifierQuestion {
1
+ export interface ClassifierChoiceQuestion {
2
2
  readonly type: 'choice';
3
3
  readonly instructions: string;
4
4
  readonly criteria: Readonly<Record<string, string>>;
5
5
  }
6
+ export interface ClassifierBoolQuestion {
7
+ readonly type: 'bool';
8
+ readonly instructions: string;
9
+ readonly criteria: {
10
+ readonly true: string;
11
+ readonly false: string;
12
+ };
13
+ }
14
+ export interface ClassifierScoreQuestion {
15
+ readonly type: 'score';
16
+ readonly instructions: string;
17
+ readonly criteria: readonly string[];
18
+ }
19
+ export type ClassifierQuestion = ClassifierChoiceQuestion | ClassifierBoolQuestion | ClassifierScoreQuestion;
6
20
  export type ClassifierQuestions = Readonly<Record<string, ClassifierQuestion>>;
7
- export interface ClassifierAnswer {
21
+ export interface ClassifierChoiceAnswer {
8
22
  readonly type: 'choice';
9
23
  readonly choice: string;
10
24
  readonly probabilities?: Readonly<Record<string, number>>;
11
25
  readonly confidence?: number;
12
26
  }
13
- export type ClassifierAnswers = Readonly<Record<string, ClassifierAnswer>>;
14
- export interface ClassifierProbabilityQuestion {
15
- readonly instructions: string;
16
- }
17
- export type ClassifierProbabilityQuestions = Readonly<Record<string, ClassifierProbabilityQuestion>>;
18
- export interface ClassifierProbabilityAnswer {
27
+ export interface ClassifierBoolAnswer {
28
+ readonly type: 'bool';
19
29
  readonly probability: number;
20
30
  }
21
- export type ClassifierProbabilityAnswers = Readonly<Record<string, ClassifierProbabilityAnswer>>;
31
+ export interface ClassifierScoreAnswer {
32
+ readonly type: 'score';
33
+ readonly score: number;
34
+ readonly confidence?: number;
35
+ }
36
+ export type ClassifierAnswer = ClassifierChoiceAnswer | ClassifierBoolAnswer | ClassifierScoreAnswer;
37
+ export type ClassifierAnswers = Readonly<Record<string, ClassifierAnswer>>;
22
38
  export interface ClassifierUsage {
23
39
  readonly requests: number;
24
40
  readonly inputTokens?: number;
@@ -33,13 +49,9 @@ export interface ClassifierEvaluationMetadata {
33
49
  }
34
50
  export interface Classifier {
35
51
  canEvaluate?(state: unknown, questions: ClassifierQuestions): boolean;
36
- evaluate(state: unknown, questions: ClassifierQuestions, signal?: AbortSignal): Promise<{
52
+ classify(state: unknown, questions: ClassifierQuestions, signal?: AbortSignal): Promise<{
37
53
  readonly answers: ClassifierAnswers;
38
54
  readonly metadata?: ClassifierEvaluationMetadata;
39
55
  }>;
40
- evaluateProbabilities?(state: unknown, questions: ClassifierProbabilityQuestions, signal?: AbortSignal): Promise<{
41
- readonly answers: ClassifierProbabilityAnswers;
42
- readonly metadata?: ClassifierEvaluationMetadata;
43
- }>;
44
56
  }
45
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/classifier/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC;AAErG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;AAEjG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACtE,QAAQ,CACN,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;KAClD,CAAC,CAAC;IACH,qBAAqB,CAAC,CACpB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,8BAA8B,EACzC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;QAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;KAClD,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/classifier/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,sBAAsB,GAAG,uBAAuB,CAAC;AAE7G,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAErG,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACtE,QAAQ,CACN,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;KAClD,CAAC,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import type { JsonObject, ClassifierQuestion as PiClassifierQuestion } from '@earendil-works/pi-ai';
2
+ import type { ClassifierAnswers, ClassifierQuestions } from './types.js';
3
+ export declare function prepareClassifierRequest(model: string, state: unknown, questions: ClassifierQuestions): {
4
+ state: JsonObject;
5
+ batches: Record<string, PiClassifierQuestion>[];
6
+ };
7
+ export declare function validateClassifierAnswers(questions: ClassifierQuestions, value: unknown): ClassifierAnswers;
8
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/classifier/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB;WA8DtE,UAAU;;EACzC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,GAAG,iBAAiB,CA4B3G"}
@@ -0,0 +1,122 @@
1
+ import { ClassifierError } from './error.js';
2
+ const MAX_COMBINED_INPUT_BYTES = 64_000;
3
+ const MAX_STATE_AND_QUESTION_BYTES = 32_000;
4
+ const MAX_INSTRUCTIONS_BYTES = 4_096;
5
+ export function prepareClassifierRequest(model, state, questions) {
6
+ let serialized;
7
+ try {
8
+ serialized = JSON.stringify(state);
9
+ }
10
+ catch {
11
+ throw new ClassifierError('invalid_request', 'Classifier state must be serializable');
12
+ }
13
+ if (typeof serialized !== 'string' || Buffer.byteLength(serialized, 'utf8') > MAX_STATE_AND_QUESTION_BYTES) {
14
+ throw new ClassifierError('invalid_request', 'Classifier state exceeds the size budget');
15
+ }
16
+ const normalized = JSON.parse(serialized);
17
+ if (!isRecord(normalized)) {
18
+ throw new ClassifierError('invalid_request', 'Classifier state must be a JSON object');
19
+ }
20
+ if (!isRecord(questions))
21
+ throw new ClassifierError('invalid_request', 'Classifier questions must be an object');
22
+ const entries = Object.entries(questions);
23
+ if (entries.length === 0)
24
+ throw new ClassifierError('invalid_request', 'Classifier questions are required');
25
+ const overhead = Buffer.byteLength(JSON.stringify({ model, state: normalized, questions: {} }), 'utf8');
26
+ const batches = [];
27
+ let current = Object.create(null);
28
+ let currentBytes = overhead;
29
+ for (const [id, question] of entries) {
30
+ if (!isRecord(question) || !id.trim() || id.length > 128 || typeof question.instructions !== 'string'
31
+ || !question.instructions.trim()
32
+ || Buffer.byteLength(question.instructions, 'utf8') > MAX_INSTRUCTIONS_BYTES) {
33
+ throw new ClassifierError('invalid_request', 'Classifier question is invalid');
34
+ }
35
+ let native;
36
+ if (question.type === 'choice') {
37
+ if (!isRecord(question.criteria))
38
+ throw new ClassifierError('invalid_request', 'Classifier choice criteria are invalid');
39
+ const values = Object.values(question.criteria);
40
+ if (values.length < 2 || values.length > 16 || values.some(value => typeof value !== 'string')) {
41
+ throw new ClassifierError('invalid_request', 'Classifier choice criteria are invalid');
42
+ }
43
+ native = { ...question, criteria: { ...question.criteria } };
44
+ }
45
+ else if (question.type === 'bool') {
46
+ if (!isRecord(question.criteria) || typeof question.criteria.true !== 'string' || typeof question.criteria.false !== 'string') {
47
+ throw new ClassifierError('invalid_request', 'Classifier bool criteria are invalid');
48
+ }
49
+ native = { ...question, criteria: { ...question.criteria } };
50
+ }
51
+ else if (question.type === 'score') {
52
+ if (!Array.isArray(question.criteria) || question.criteria.length < 2 || question.criteria.length > 16
53
+ || question.criteria.some(value => typeof value !== 'string')) {
54
+ throw new ClassifierError('invalid_request', 'Classifier score criteria are invalid');
55
+ }
56
+ native = { ...question, criteria: [...question.criteria] };
57
+ }
58
+ else {
59
+ throw new ClassifierError('invalid_request', 'Classifier question type is invalid');
60
+ }
61
+ const added = Buffer.byteLength(JSON.stringify({ [id]: native }), 'utf8') + 1;
62
+ if (overhead + added > MAX_STATE_AND_QUESTION_BYTES) {
63
+ throw new ClassifierError('invalid_request', 'Classifier question exceeds the size budget');
64
+ }
65
+ if (Object.keys(current).length > 0 && currentBytes + added > MAX_COMBINED_INPUT_BYTES) {
66
+ batches.push(current);
67
+ current = Object.create(null);
68
+ currentBytes = overhead;
69
+ }
70
+ current[id] = native;
71
+ currentBytes += added;
72
+ }
73
+ batches.push(current);
74
+ return { state: normalized, batches };
75
+ }
76
+ export function validateClassifierAnswers(questions, value) {
77
+ if (!isRecord(value))
78
+ throw new ClassifierError('response_invalid', 'Classifier response is missing answers');
79
+ const answers = Object.create(null);
80
+ for (const [id, question] of Object.entries(questions)) {
81
+ const answer = value[id];
82
+ if (!isRecord(answer) || answer.type !== question.type)
83
+ throw invalidAnswer();
84
+ if (question.type === 'bool') {
85
+ if (!isUnit(answer.probability))
86
+ throw invalidAnswer();
87
+ answers[id] = { type: 'bool', probability: answer.probability };
88
+ continue;
89
+ }
90
+ if (answer.confidence !== undefined && !isUnit(answer.confidence))
91
+ throw invalidAnswer();
92
+ const confidence = answer.confidence;
93
+ if (question.type === 'choice') {
94
+ if (typeof answer.choice !== 'string' || !Object.hasOwn(question.criteria, answer.choice))
95
+ throw invalidAnswer();
96
+ if (answer.probabilities !== undefined && (!isRecord(answer.probabilities)
97
+ || Object.values(answer.probabilities).some(value => !isUnit(value))))
98
+ throw invalidAnswer();
99
+ answers[id] = {
100
+ type: 'choice', choice: answer.choice,
101
+ ...(answer.probabilities === undefined ? {} : { probabilities: answer.probabilities }),
102
+ ...(confidence === undefined ? {} : { confidence }),
103
+ };
104
+ }
105
+ else {
106
+ if (typeof answer.score !== 'number' || !Number.isFinite(answer.score))
107
+ throw invalidAnswer();
108
+ answers[id] = { type: 'score', score: answer.score, ...(confidence === undefined ? {} : { confidence }) };
109
+ }
110
+ }
111
+ return answers;
112
+ }
113
+ function invalidAnswer() {
114
+ return new ClassifierError('response_invalid', 'Classifier returned an invalid answer');
115
+ }
116
+ function isRecord(value) {
117
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
118
+ }
119
+ function isUnit(value) {
120
+ return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1;
121
+ }
122
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/classifier/validation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { getSupportedThinkingLevels } from '@earendil-works/pi-ai';
2
2
  import { collectClassifierSessionEvidence, sanitizeClassifierText, } from '../classifier/index.js';
3
- const CODEX_MODELS = new Set(['gpt-6-astra', 'gpt-6-sol', 'gpt-6-luna']);
3
+ const CODEX_MODELS = new Set(['gpt-6-astra', 'gpt-6-sol', 'gpt-6.1-sol', 'gpt-6-luna']);
4
4
  const LEVELS = ['low', 'medium', 'high', 'xhigh', 'max'];
5
5
  export function supportsDynamicThinking(model) {
6
6
  if (!model?.reasoning)
@@ -44,7 +44,7 @@ export async function evaluateDynamicThinkingLevel(classifier, model, request, s
44
44
  const state = { request: sanitizeClassifierText(request, 4_096), session };
45
45
  if (!state.request)
46
46
  return undefined;
47
- const { answers, metadata } = await classifier.evaluate(state, { effort: question }, signal);
47
+ const { answers, metadata } = await classifier.classify(state, { effort: question }, signal);
48
48
  if (signal?.aborted)
49
49
  return undefined;
50
50
  const answer = answers.effort;
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/dynamic-thinking/selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/dynamic-thinking/selection.ts"],"names":[],"mappings":"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"}
package/dist/session.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createAgentSession, } from '@earendil-works/pi-coding-agent';
2
2
  import { loadFelanSessionExtensions } from './extensions.js';
3
- import { attachJevPreflight } from './classifier/jev/classifier.js';
3
+ import { attachClassifierPreflight } from './classifier/pi-classifier.js';
4
4
  import { createDynamicThinkingSession, DYNAMIC_THINKING_PRODUCER } from './dynamic-thinking/session.js';
5
5
  import { installModelSelectionPersistenceScope } from './model-selection.js';
6
6
  import { createAgentCoreResourceLoaderWithContextFiles, runtimeToolsExtensionName, } from './resource-loader.js';
@@ -37,7 +37,7 @@ export function createAgentCoreSessionRuntimeFactory(createOptions) {
37
37
  async function composeAgentCoreSession(options) {
38
38
  const agentDir = options.agentDir ?? options.runtime.cwd;
39
39
  const preflight = options.sessionManager.getHeader()?.parentSession === undefined && options.runtime.classifier
40
- ? attachJevPreflight(options.runtime.classifier, options.runtime.logger)
40
+ ? attachClassifierPreflight(options.runtime.classifier, options.runtime.logger)
41
41
  : undefined;
42
42
  const modelSelectionScope = installModelSelectionPersistenceScope(options.settingsManager);
43
43
  const featureExtensions = await loadFelanSessionExtensions(options.extensionPackages, options.importExtension, options.runtime, agentDir, modelSelectionScope, options.extensionConfigOverrides, options.savings);
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felan-ai/agent-core",
3
- "version": "0.9.5",
3
+ "version": "0.10.0",
4
4
  "description": "Portable Felan agent contracts and composition",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -25,9 +25,9 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@earendil-works/pi-ai": "0.87.1",
29
- "@earendil-works/pi-coding-agent": "0.87.1",
30
- "@earendil-works/pi-server": "0.87.1",
28
+ "@earendil-works/pi-ai": "0.99.1",
29
+ "@earendil-works/pi-coding-agent": "0.99.1",
30
+ "@earendil-works/pi-server": "0.99.1",
31
31
  "@lydell/node-pty": "1.2.0-beta.14"
32
32
  },
33
33
  "publishConfig": {
@@ -1,12 +0,0 @@
1
- import type { Classifier } from '../types.js';
2
- import { type CreateJevClientOptions } from './client.js';
3
- import type { Logger } from '../../logger.js';
4
- export declare function attachJevPreflight(classifier: Classifier, logger: Logger): {
5
- startNextTurn(): void;
6
- finishPreflight(): void;
7
- dispose(): void;
8
- evaluate<T>(decision: string, work: (signal: AbortSignal) => Promise<T>, signal?: AbortSignal): Promise<T>;
9
- } | undefined;
10
- export declare function createJevClassifier(): Classifier | undefined;
11
- export declare function createJevClassifierWithOptions(options: CreateJevClientOptions): Classifier | undefined;
12
- //# sourceMappingURL=classifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../src/classifier/jev/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAK9C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;;;;;cAKxE;AAED,wBAAgB,mBAAmB,IAAI,UAAU,GAAG,SAAS,CAE5D;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,sBAAsB,GAC9B,UAAU,GAAG,SAAS,CAwCxB"}