@postalsys/email-content 0.1.8 → 0.1.9

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 (112) hide show
  1. package/README.md +17 -8
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/analyze.d.ts +3 -0
  4. package/dist/analyze.d.ts.map +1 -1
  5. package/dist/analyze.js +10 -4
  6. package/dist/analyze.js.map +1 -1
  7. package/dist/annotate/agreement.d.ts +99 -0
  8. package/dist/annotate/agreement.d.ts.map +1 -0
  9. package/dist/annotate/agreement.js +126 -0
  10. package/dist/annotate/agreement.js.map +1 -0
  11. package/dist/annotate/client.d.ts +7 -19
  12. package/dist/annotate/client.d.ts.map +1 -1
  13. package/dist/annotate/client.js +28 -82
  14. package/dist/annotate/client.js.map +1 -1
  15. package/dist/annotate/http.d.ts +57 -0
  16. package/dist/annotate/http.d.ts.map +1 -0
  17. package/dist/annotate/http.js +99 -0
  18. package/dist/annotate/http.js.map +1 -0
  19. package/dist/annotate/llm.d.ts +17 -0
  20. package/dist/annotate/llm.d.ts.map +1 -1
  21. package/dist/annotate/llm.js +68 -36
  22. package/dist/annotate/llm.js.map +1 -1
  23. package/dist/annotate/probabilities.d.ts +48 -0
  24. package/dist/annotate/probabilities.d.ts.map +1 -0
  25. package/dist/annotate/probabilities.js +119 -0
  26. package/dist/annotate/probabilities.js.map +1 -0
  27. package/dist/annotate/providers.d.ts +26 -0
  28. package/dist/annotate/providers.d.ts.map +1 -0
  29. package/dist/annotate/providers.js +43 -0
  30. package/dist/annotate/providers.js.map +1 -0
  31. package/dist/annotate/store.d.ts +3 -0
  32. package/dist/annotate/store.d.ts.map +1 -1
  33. package/dist/annotate/store.js +3 -2
  34. package/dist/annotate/store.js.map +1 -1
  35. package/dist/annotate/typesafe-client.d.ts +64 -0
  36. package/dist/annotate/typesafe-client.d.ts.map +1 -0
  37. package/dist/annotate/typesafe-client.js +76 -0
  38. package/dist/annotate/typesafe-client.js.map +1 -0
  39. package/dist/annotate/typesafe-prompt.d.ts +64 -0
  40. package/dist/annotate/typesafe-prompt.d.ts.map +1 -0
  41. package/dist/annotate/typesafe-prompt.js +170 -0
  42. package/dist/annotate/typesafe-prompt.js.map +1 -0
  43. package/dist/classify/rules.d.ts +7 -0
  44. package/dist/classify/rules.d.ts.map +1 -1
  45. package/dist/classify/rules.js +67 -14
  46. package/dist/classify/rules.js.map +1 -1
  47. package/dist/cli/agreement.d.ts +27 -0
  48. package/dist/cli/agreement.d.ts.map +1 -0
  49. package/dist/cli/agreement.js +153 -0
  50. package/dist/cli/agreement.js.map +1 -0
  51. package/dist/cli/annotate.d.ts.map +1 -1
  52. package/dist/cli/annotate.js +28 -16
  53. package/dist/cli/annotate.js.map +1 -1
  54. package/dist/cli/audit.d.ts +12 -0
  55. package/dist/cli/audit.d.ts.map +1 -0
  56. package/dist/cli/audit.js +134 -0
  57. package/dist/cli/audit.js.map +1 -0
  58. package/dist/cli/disagreements.d.ts.map +1 -1
  59. package/dist/cli/disagreements.js +20 -3
  60. package/dist/cli/disagreements.js.map +1 -1
  61. package/dist/cli/evaluate.d.ts.map +1 -1
  62. package/dist/cli/evaluate.js +5 -70
  63. package/dist/cli/evaluate.js.map +1 -1
  64. package/dist/cli/main.js +28 -2
  65. package/dist/cli/main.js.map +1 -1
  66. package/dist/corpus/analyze.d.ts.map +1 -1
  67. package/dist/corpus/analyze.js +4 -5
  68. package/dist/corpus/analyze.js.map +1 -1
  69. package/dist/corpus/migrations/index.d.ts.map +1 -1
  70. package/dist/corpus/migrations/index.js +14 -0
  71. package/dist/corpus/migrations/index.js.map +1 -1
  72. package/dist/corpus/stats.d.ts +1 -0
  73. package/dist/corpus/stats.d.ts.map +1 -1
  74. package/dist/corpus/stats.js +1 -0
  75. package/dist/corpus/stats.js.map +1 -1
  76. package/dist/detect/patterns/forward-headers.json +24 -0
  77. package/dist/detect/patterns/html-clients.json +27 -0
  78. package/dist/detect/patterns/reply-headers.json +368 -0
  79. package/dist/detect/reply-header.d.ts.map +1 -1
  80. package/dist/detect/reply-header.js +12 -1
  81. package/dist/detect/reply-header.js.map +1 -1
  82. package/dist/detect/subject.d.ts +16 -0
  83. package/dist/detect/subject.d.ts.map +1 -0
  84. package/dist/detect/subject.js +22 -0
  85. package/dist/detect/subject.js.map +1 -0
  86. package/dist/eval/pattern-audit.d.ts +56 -0
  87. package/dist/eval/pattern-audit.d.ts.map +1 -0
  88. package/dist/eval/pattern-audit.js +111 -0
  89. package/dist/eval/pattern-audit.js.map +1 -0
  90. package/dist/eval/reference.d.ts +44 -0
  91. package/dist/eval/reference.d.ts.map +1 -0
  92. package/dist/eval/reference.js +87 -0
  93. package/dist/eval/reference.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/mime/flowed.d.ts +14 -0
  98. package/dist/mime/flowed.d.ts.map +1 -0
  99. package/dist/mime/flowed.js +71 -0
  100. package/dist/mime/flowed.js.map +1 -0
  101. package/dist/mime/parse.js +2 -5
  102. package/dist/mime/parse.js.map +1 -1
  103. package/dist/segment/html-blocks.d.ts.map +1 -1
  104. package/dist/segment/html-blocks.js +11 -7
  105. package/dist/segment/html-blocks.js.map +1 -1
  106. package/dist/segment/text-blocks.d.ts.map +1 -1
  107. package/dist/segment/text-blocks.js +14 -3
  108. package/dist/segment/text-blocks.js.map +1 -1
  109. package/dist/types.d.ts +3 -3
  110. package/dist/types.d.ts.map +1 -1
  111. package/dist/types.js +2 -2
  112. package/package.json +2 -2
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * Minimal TypeSafe System One client.
4
+ *
5
+ * No SDK dependency, for the same reason as the OpenAI client: the package ships three runtime
6
+ * dependencies and none of them opens a socket. `@typesafe-ai/sdk` could only be a dev dependency,
7
+ * and `dist/cli` is part of the published tarball, so an installed `email-content annotate` would
8
+ * fail to load it. The surface used here is one POST.
9
+ *
10
+ * This is the second place in the codebase that sends message content off the machine, under the
11
+ * same terms as the first: only reachable from `email-content annotate`, opt in, fails closed
12
+ * without a key. See docs/threat-model.md, "Configured exception: LLM annotation".
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TypeSafeClient = exports.TypeSafeError = exports.TYPESAFE_DEFAULT_MODEL = void 0;
16
+ exports.typeSafeConfigFromEnv = typeSafeConfigFromEnv;
17
+ const http_1 = require("./http");
18
+ /**
19
+ * Pinned rather than `jev-latest`: labels are stored with the model that produced them, and an
20
+ * alias that silently moves would put two models' output under one name.
21
+ */
22
+ exports.TYPESAFE_DEFAULT_MODEL = 'jev-1.13.0';
23
+ class TypeSafeError extends http_1.ApiError {
24
+ constructor(message, status, retryable) {
25
+ super(message, status, retryable);
26
+ this.name = 'TypeSafeError';
27
+ }
28
+ }
29
+ exports.TypeSafeError = TypeSafeError;
30
+ /** Load configuration from the environment, after process.loadEnvFile(). */
31
+ function typeSafeConfigFromEnv(model, overrides = {}) {
32
+ return (0, http_1.apiConfigFromEnv)({ keyVar: 'TYPESAFE_API_KEY', urlVar: 'TYPESAFE_BASE_URL', defaultUrl: 'https://api.typesafe.ai/v1' }, model, overrides);
33
+ }
34
+ class TypeSafeClient {
35
+ config;
36
+ /** Input tokens are reported as prompt tokens, output tokens as completion tokens. */
37
+ usage = { promptTokens: 0, completionTokens: 0, totalTokens: 0, requests: 0 };
38
+ constructor(config) {
39
+ this.config = config;
40
+ }
41
+ get model() {
42
+ return this.config.model;
43
+ }
44
+ /**
45
+ * Ask a set of questions about one state.
46
+ *
47
+ * Retries on rate limits (429), overload (529) and other server errors. Anything else, a 422
48
+ * validation failure in particular, is a bug in the request and is not retried. Error messages
49
+ * carry the status only, never the response body: a validation error may echo the state back,
50
+ * and the state is private mail.
51
+ */
52
+ async ask(request) {
53
+ return (0, http_1.postJson)({
54
+ url: `${this.config.baseUrl}/systemone`,
55
+ apiKey: this.config.apiKey,
56
+ policy: this.config,
57
+ payload: { model: this.config.model, state: request.state, questions: request.questions },
58
+ httpError: status => new TypeSafeError(`TypeSafe HTTP ${status}`, status, status === 429 || status >= 500),
59
+ parse: raw => {
60
+ const body = raw;
61
+ if (!body || typeof body.answers !== 'object' || body.answers === null) {
62
+ throw new TypeSafeError('TypeSafe response has no answers', 0, false);
63
+ }
64
+ const input = typeof body.usage?.input_tokens === 'number' ? body.usage.input_tokens : 0;
65
+ const output = typeof body.usage?.output_tokens === 'number' ? body.usage.output_tokens : 0;
66
+ this.usage.requests++;
67
+ this.usage.promptTokens += input;
68
+ this.usage.completionTokens += output;
69
+ this.usage.totalTokens += input + output;
70
+ return { answers: body.answers };
71
+ }
72
+ });
73
+ }
74
+ }
75
+ exports.TypeSafeClient = TypeSafeClient;
76
+ //# sourceMappingURL=typesafe-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typesafe-client.js","sourceRoot":"","sources":["../../src/annotate/typesafe-client.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAgDH,sDAEC;AAhDD,iCAA0F;AAE1F;;;GAGG;AACU,QAAA,sBAAsB,GAAG,YAAY,CAAC;AAgCnD,MAAa,aAAc,SAAQ,eAAQ;IACvC,YAAY,OAAe,EAAE,MAAc,EAAE,SAAkB;QAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AALD,sCAKC;AAED,4EAA4E;AAC5E,SAAgB,qBAAqB,CAAC,KAAa,EAAE,YAAqC,EAAE;IACxF,OAAO,IAAA,uBAAgB,EAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,4BAA4B,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACrJ,CAAC;AAED,MAAa,cAAc;IACN,MAAM,CAAiB;IACxC,sFAAsF;IAC7E,KAAK,GAAU,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAE9F,YAAY,MAAsB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAC,OAAyB;QAC/B,OAAO,IAAA,eAAQ,EAAoB;YAC/B,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,YAAY;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;YACzF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,iBAAiB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;YAC1G,KAAK,EAAE,GAAG,CAAC,EAAE;gBACT,MAAM,IAAI,GAAG,GAAgG,CAAC;gBAC9G,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrE,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC1E,CAAC;gBAED,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5F,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,GAAG,MAAM,CAAC;gBAEzC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAuC,EAAE,CAAC;YACrE,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AA7CD,wCA6CC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The TypeSafe annotation questions.
3
+ *
4
+ * The same conventions as the OpenAI prompt (`prompt.ts`, docs/annotation-guide.md), reshaped for a
5
+ * model that answers typed questions instead of following a system prompt:
6
+ *
7
+ * - One Choice question per block, over the same closed label set. The answer is an option name
8
+ * and a probability distribution, so "select, never generate" holds by the protocol itself:
9
+ * there is no field in which text could come back.
10
+ * - The HOW TO DECIDE, QUOTE DEPTH and REGION WINS rules live in the option descriptions they
11
+ * disambiguate, because each question is evaluated in isolation and only sees its own criteria.
12
+ * - The COST OF ERRORS and CONFIDENCE sections are deliberately absent. Asking the model to be
13
+ * biased would bake the bias into the distribution; instead the raw distribution is stored and
14
+ * the asymmetry is applied in code (`probabilities.ts`).
15
+ *
16
+ * Versioned separately from the OpenAI prompt so runs under the two never share a resume key or get
17
+ * silently compared as one convention.
18
+ */
19
+ import { type Label } from '../types';
20
+ import { type ChoiceQuestion, type SystemOneRequest } from './typesafe-client';
21
+ import { type PromptBlock } from './prompt';
22
+ export declare const TYPESAFE_PROMPT_VERSION = "annotate-ts-v1";
23
+ /**
24
+ * Option descriptions. Objects rather than strings because the confusable pairs (REPLY_HISTORY vs
25
+ * INLINE_QUOTE, SIGNATURE vs REPLY_HISTORY, DISCLAIMER vs NEW_CONTENT) need a stated boundary in
26
+ * both directions, and jev reads literally: an unstated rule is not applied.
27
+ */
28
+ export declare const LABEL_CRITERIA: Readonly<Record<Label, Record<string, string | string[]>>>;
29
+ /**
30
+ * Question for the block at `position` in `state.blocks`.
31
+ *
32
+ * The path is the array position, not the block index: jev resolves `blocks[3]` as the fourth
33
+ * element, and block indices skip the blank blocks that are never sent. For the same reason the
34
+ * state carries no index field at all, so there is no second number the model could confuse with
35
+ * the position. One hop, named directly, per the jev 1.13 guidance on indirection.
36
+ */
37
+ export declare function blockQuestion(position: number): ChoiceQuestion;
38
+ /** Question id for a block. Ids are never sent to the model, only used to match answers. */
39
+ export declare function questionId(index: number): string;
40
+ /** Inverse of `questionId`. Null for anything that is not one. */
41
+ export declare function parseQuestionId(id: string): number | null;
42
+ /** The state: exactly what the OpenAI prompt sends (block text, quote depth, reply flag), as JSON. */
43
+ export declare function buildState(blocks: readonly PromptBlock[], isReply: boolean): {
44
+ is_reply: boolean;
45
+ blocks: {
46
+ quote_depth: number;
47
+ truncated: boolean;
48
+ text: string;
49
+ }[];
50
+ };
51
+ /**
52
+ * Tokens allowed per request, below the documented 64k so the estimate below can be wrong by a
53
+ * margin without a request being rejected.
54
+ */
55
+ export declare const REQUEST_TOKEN_BUDGET = 56000;
56
+ /**
57
+ * Split one message's questions into requests that fit the token budget.
58
+ *
59
+ * Every request carries the full state, because a block cannot be labelled without its neighbours.
60
+ * Only the questions are divided. With the 60 block, 700 character caps the state is at most about
61
+ * 21k estimated tokens, inside the documented 32k limit for state plus one question.
62
+ */
63
+ export declare function planRequests(blocks: readonly PromptBlock[], isReply: boolean): SystemOneRequest[];
64
+ //# sourceMappingURL=typesafe-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typesafe-prompt.d.ts","sourceRoot":"","sources":["../../src/annotate/typesafe-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CA+DrF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAY9D;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,sGAAsG;AACtG,wBAAgB,UAAU,CACtB,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,OAAO,GACjB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAK5F;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAa1C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAiBjG"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * The TypeSafe annotation questions.
4
+ *
5
+ * The same conventions as the OpenAI prompt (`prompt.ts`, docs/annotation-guide.md), reshaped for a
6
+ * model that answers typed questions instead of following a system prompt:
7
+ *
8
+ * - One Choice question per block, over the same closed label set. The answer is an option name
9
+ * and a probability distribution, so "select, never generate" holds by the protocol itself:
10
+ * there is no field in which text could come back.
11
+ * - The HOW TO DECIDE, QUOTE DEPTH and REGION WINS rules live in the option descriptions they
12
+ * disambiguate, because each question is evaluated in isolation and only sees its own criteria.
13
+ * - The COST OF ERRORS and CONFIDENCE sections are deliberately absent. Asking the model to be
14
+ * biased would bake the bias into the distribution; instead the raw distribution is stored and
15
+ * the asymmetry is applied in code (`probabilities.ts`).
16
+ *
17
+ * Versioned separately from the OpenAI prompt so runs under the two never share a resume key or get
18
+ * silently compared as one convention.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.REQUEST_TOKEN_BUDGET = exports.LABEL_CRITERIA = exports.TYPESAFE_PROMPT_VERSION = void 0;
22
+ exports.blockQuestion = blockQuestion;
23
+ exports.questionId = questionId;
24
+ exports.parseQuestionId = parseQuestionId;
25
+ exports.buildState = buildState;
26
+ exports.planRequests = planRequests;
27
+ exports.TYPESAFE_PROMPT_VERSION = 'annotate-ts-v1';
28
+ /**
29
+ * Option descriptions. Objects rather than strings because the confusable pairs (REPLY_HISTORY vs
30
+ * INLINE_QUOTE, SIGNATURE vs REPLY_HISTORY, DISCLAIMER vs NEW_CONTENT) need a stated boundary in
31
+ * both directions, and jev reads literally: an unstated rule is not applied.
32
+ */
33
+ exports.LABEL_CRITERIA = {
34
+ NEW_CONTENT: {
35
+ what: 'Text the sender wrote themselves in this message.',
36
+ includes: [
37
+ 'Greetings, answers, questions and closing words the sender wrote now, at quote depth 0',
38
+ 'Text the sender pasted in that merely looks like an email',
39
+ 'Boilerplate, when the message has no authored text at all outside it: then the boilerplate is the content, as in a newsletter'
40
+ ],
41
+ not_this: [
42
+ 'Any block at quote depth 2 or more: that is REPLY_HISTORY',
43
+ "The sender's name and contact block: that is SIGNATURE",
44
+ 'System attached notices and service footers in a message that also has authored text: that is DISCLAIMER'
45
+ ]
46
+ },
47
+ INLINE_QUOTE: {
48
+ what: 'Older text the sender quoted on purpose, usually at quote depth 1, in order to answer it here point by point.',
49
+ giveaway: "The sender's own new text comes after it and responds to it, often alternating several times.",
50
+ not_this: [
51
+ 'A quote that runs uninterrupted to the end of the message as one copy of the previous mail: that is REPLY_HISTORY',
52
+ 'Any block at quote depth 2 or more: that is REPLY_HISTORY'
53
+ ]
54
+ },
55
+ REPLY_HISTORY: {
56
+ what: "A copy of an earlier message that the sender's mail client attached automatically, usually the whole previous message sitting at the end.",
57
+ includes: [
58
+ 'The attribution line that opens it, such as "On <date>, <person> wrote:", "-----Original Message-----" or an embedded From:/Sent:/To:/Subject: block',
59
+ 'Every block at quote depth 2 or more, including greetings, thanks, questions and sign-offs, because someone wrote them in an earlier message',
60
+ 'Signatures, "--" delimiters, legal notices and forwards that sit inside that earlier message',
61
+ 'An earlier message embedded without quote markers, as plain paragraphs after an attribution line',
62
+ 'A hard wrapped quoted line whose continuation lost its quote marker'
63
+ ],
64
+ not_this: ['A depth 1 quote that the sender answers below it: that is INLINE_QUOTE']
65
+ },
66
+ FORWARDED_CONTENT: {
67
+ what: 'A message the sender forwarded on purpose in this message.',
68
+ includes: [
69
+ 'The forward marker that opens it, such as "Begin forwarded message:" or "---------- Forwarded message ----------"',
70
+ 'Everything inside the forwarded message, including its signatures and confidentiality notices'
71
+ ],
72
+ not_this: ['A forward that appears inside quoted reply history, since the earlier correspondent forwarded it: that is REPLY_HISTORY']
73
+ },
74
+ SIGNATURE: {
75
+ what: 'The sign-off block of this sender, in this message: name, role, company, phone, links, "Sent from my phone".',
76
+ not_this: ['A signature inside quoted history: that is REPLY_HISTORY', 'A signature inside a forwarded message: that is FORWARDED_CONTENT']
77
+ },
78
+ DISCLAIMER: {
79
+ what: 'Boilerplate a system, gateway or template attached to this message independently of what the sender wrote.',
80
+ includes: [
81
+ 'Confidentiality and liability notices, virus scanning notices',
82
+ 'Company registration and VAT numbers, registered office addresses',
83
+ 'Unsubscribe and preference footers, "powered by" branding',
84
+ 'Templated promotional or navigational footers: subscribe invitations, app download links, social media links, help and support pointers'
85
+ ],
86
+ not_this: [
87
+ 'Boilerplate inside quoted history: that is REPLY_HISTORY',
88
+ 'Boilerplate inside a forwarded message: that is FORWARDED_CONTENT',
89
+ 'Boilerplate in a message with no authored text anywhere else: that is NEW_CONTENT'
90
+ ]
91
+ },
92
+ UNKNOWN: {
93
+ what: 'It is genuinely impossible to tell which message this block belongs to.',
94
+ not_this: ['A block whose place in the message is clear, however short it is']
95
+ }
96
+ };
97
+ /**
98
+ * Question for the block at `position` in `state.blocks`.
99
+ *
100
+ * The path is the array position, not the block index: jev resolves `blocks[3]` as the fourth
101
+ * element, and block indices skip the blank blocks that are never sent. For the same reason the
102
+ * state carries no index field at all, so there is no second number the model could confuse with
103
+ * the position. One hop, named directly, per the jev 1.13 guidance on indirection.
104
+ */
105
+ function blockQuestion(position) {
106
+ return {
107
+ type: 'choice',
108
+ instructions: {
109
+ question: `Which part of this email message does \`blocks[${position}]\` belong to?`,
110
+ how_to_judge: 'Judge by which message the block was written in, never by what its text looks like. Greetings, signatures and legal footers occur inside every part of a message. Read the blocks before and after it to see where it sits.',
111
+ state_fields: '`blocks` is the whole message split into blocks, in order. `quote_depth` is the quote nesting the message shows: 0 not quoted, 1 quoted once, 2 or more quoted inside a quote. `truncated` means the text was cut short. `is_reply` says whether the message replies to an earlier one.'
112
+ },
113
+ criteria: exports.LABEL_CRITERIA
114
+ };
115
+ }
116
+ /** Question id for a block. Ids are never sent to the model, only used to match answers. */
117
+ function questionId(index) {
118
+ return `b${index}`;
119
+ }
120
+ /** Inverse of `questionId`. Null for anything that is not one. */
121
+ function parseQuestionId(id) {
122
+ const index = /^b(\d+)$/.exec(id)?.[1];
123
+ return index === undefined ? null : Number(index);
124
+ }
125
+ /** The state: exactly what the OpenAI prompt sends (block text, quote depth, reply flag), as JSON. */
126
+ function buildState(blocks, isReply) {
127
+ return {
128
+ is_reply: isReply,
129
+ blocks: blocks.map(block => ({ quote_depth: block.quoteDepth, truncated: block.truncated, text: block.text }))
130
+ };
131
+ }
132
+ /**
133
+ * Tokens allowed per request, below the documented 64k so the estimate below can be wrong by a
134
+ * margin without a request being rejected.
135
+ */
136
+ exports.REQUEST_TOKEN_BUDGET = 56000;
137
+ /**
138
+ * Deliberately pessimistic characters per token. English runs near four, but the corpus is largely
139
+ * Estonian and also holds Cyrillic and CJK text, which tokenise much denser. Overestimating only
140
+ * costs an extra request; underestimating costs a rejected message.
141
+ */
142
+ const CHARS_PER_TOKEN = 2;
143
+ function estimateTokens(value) {
144
+ return Math.ceil(JSON.stringify(value).length / CHARS_PER_TOKEN);
145
+ }
146
+ /**
147
+ * Split one message's questions into requests that fit the token budget.
148
+ *
149
+ * Every request carries the full state, because a block cannot be labelled without its neighbours.
150
+ * Only the questions are divided. With the 60 block, 700 character caps the state is at most about
151
+ * 21k estimated tokens, inside the documented 32k limit for state plus one question.
152
+ */
153
+ function planRequests(blocks, isReply) {
154
+ if (!blocks.length) {
155
+ return [];
156
+ }
157
+ const state = buildState(blocks, isReply);
158
+ const perQuestion = estimateTokens(blockQuestion(blocks.length - 1));
159
+ const perRequest = Math.max(1, Math.floor((exports.REQUEST_TOKEN_BUDGET - estimateTokens(state)) / perQuestion));
160
+ const requests = [];
161
+ for (let from = 0; from < blocks.length; from += perRequest) {
162
+ const questions = {};
163
+ blocks.slice(from, from + perRequest).forEach((block, offset) => {
164
+ questions[questionId(block.index)] = blockQuestion(from + offset);
165
+ });
166
+ requests.push({ state, questions });
167
+ }
168
+ return requests;
169
+ }
170
+ //# sourceMappingURL=typesafe-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typesafe-prompt.js","sourceRoot":"","sources":["../../src/annotate/typesafe-prompt.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,13 @@ export interface ClassifyOptions {
47
47
  * and unlike a greeting phrase it is language independent.
48
48
  */
49
49
  senderTokens?: readonly string[];
50
+ /**
51
+ * The subject marks the message as a forward and not as a reply. Several clients introduce a
52
+ * forward with the same separators they use for reply history ("-------- Original Message
53
+ * --------", Outlook's #divRplyFwdMsg, quote containers), so without this the forwarded message
54
+ * is hidden as history. With it, whatever the reply rules call history is forwarded instead.
55
+ */
56
+ messageIsForward?: boolean;
50
57
  }
51
58
  /**
52
59
  * Classify one representation's blocks.
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/classify/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AA8ED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,EAAE,CA8oBvG"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/classify/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAiGD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,EAAE,CAqrBvG"}
@@ -67,6 +67,24 @@ function isQuote(block) {
67
67
  function isAnchorBlock(block) {
68
68
  return block.kind === 'reply_header' || block.kind === 'quoted_header_block';
69
69
  }
70
+ /**
71
+ * Whether an embedded header block (From/Sent/To/Subject) follows within the next few non-blank
72
+ * blocks: the corroboration that turns a lone anchor into Outlook's unmarked history shape.
73
+ */
74
+ function embeddedHeaderAfter(blocks, start) {
75
+ let seen = 0;
76
+ for (let i = start; i < blocks.length && seen < 4; i++) {
77
+ const block = blocks[i];
78
+ if (block.features.isAllBlank) {
79
+ continue;
80
+ }
81
+ seen++;
82
+ if (block.kind === 'quoted_header_block' || block.features.headerFieldLines >= 2) {
83
+ return true;
84
+ }
85
+ }
86
+ return false;
87
+ }
70
88
  /** Group blocks into alternating quoted and unquoted runs, ignoring blank blocks. */
71
89
  function findRuns(blocks) {
72
90
  const runs = [];
@@ -142,9 +160,10 @@ function classifyBlocks(blocks, options = {}) {
142
160
  if (hasAttribution || hasBlockquote) {
143
161
  for (const block of blocks) {
144
162
  const container = strengthOf(block, ['quote-container']);
145
- if (container >= config.minAnchorStrength && containerAnchor === -1) {
163
+ if (container >= config.minAnchorStrength) {
146
164
  containerAnchor = block.index;
147
165
  containerStrength = container;
166
+ break;
148
167
  }
149
168
  }
150
169
  }
@@ -354,10 +373,40 @@ function classifyBlocks(blocks, options = {}) {
354
373
  const runs = findRuns(blocks);
355
374
  const quotedRuns = runs.filter(run => run.quoted);
356
375
  const contentRunsAfterFirstQuote = runs.filter(run => !run.quoted && quotedRuns.length > 0 && run.start > quotedRuns[0].start);
376
+ // Where unmarked history begins, if a separator or reply anchor is followed closely by an
377
+ // embedded header block, the Outlook shape. Paragraphs after that point are the previous
378
+ // message's body, not answers, even though nothing marks them as quoted. Without this, a
379
+ // quote nested inside that history (Outlook replying to a Gmail thread) made the unmarked
380
+ // paragraphs look like answers between two quoted runs, and the whole history stayed visible.
381
+ // Only when the sender wrote something above it. A message that opens with the separator has no
382
+ // reply of its own before the "history", so the history is the message: in the reference set,
383
+ // two such messages lost every authored block when this was unconditional.
384
+ const authoredBefore = (index) => {
385
+ for (let i = 0; i < index; i++) {
386
+ const block = blocks[i];
387
+ if (hasWords(block) && !isQuote(block) && !isAnchorBlock(block) && decisions[i]?.label === 'NEW_CONTENT') {
388
+ return true;
389
+ }
390
+ }
391
+ return false;
392
+ };
393
+ const unmarkedHistoryStart = [separatorAnchor, replyAnchor]
394
+ .filter(index => index !== -1 && embeddedHeaderAfter(blocks, index) && authoredBefore(index))
395
+ .reduce((first, index) => Math.min(first, index), blocks.length);
357
396
  // Interleaved: more than one quoted run, with authored content between them. Every quoted run
358
397
  // is then context for the answer beside it, not disposable history.
359
398
  const interleaved = quotedRuns.length > 1 &&
360
399
  contentRunsAfterFirstQuote.some(run => {
400
+ if (run.start > unmarkedHistoryStart) {
401
+ return false;
402
+ }
403
+ // Likewise inside a trusted quote container: Lark keeps the previous message's body as
404
+ // plain paragraphs inside its history container, which are not answers either.
405
+ if (containerAnchor !== -1 &&
406
+ run.start >= containerAnchor &&
407
+ strengthOf(blocks[run.start], ['quote-container']) >= config.minAnchorStrength) {
408
+ return false;
409
+ }
361
410
  for (let i = run.start; i <= run.end; i++) {
362
411
  const decision = decisions[i];
363
412
  const block = blocks[i];
@@ -497,19 +546,7 @@ function classifyBlocks(blocks, options = {}) {
497
546
  // Corroboration: Outlook's shape is the separator followed closely by the embedded header
498
547
  // block. With it, this is safe to hide. Without it, the region is collapsed but stays
499
548
  // recoverable, because a lone anchor could in principle be text the sender typed.
500
- let corroborated = false;
501
- let seen = 0;
502
- for (let i = replyAnchor; i < blocks.length && seen < 4; i++) {
503
- const block = blocks[i];
504
- if (block.features.isAllBlank) {
505
- continue;
506
- }
507
- seen++;
508
- if (block.kind === 'quoted_header_block' || block.features.headerFieldLines >= 2) {
509
- corroborated = true;
510
- break;
511
- }
512
- }
549
+ const corroborated = embeddedHeaderAfter(blocks, replyAnchor);
513
550
  const reasons = corroborated
514
551
  ? ['preceded_by_reply_header', 'contains_old_message_headers', 'no_new_content_after_region']
515
552
  : ['preceded_by_reply_header', 'ambiguous_kept_visible'];
@@ -680,6 +717,22 @@ function classifyBlocks(blocks, options = {}) {
680
717
  decision.reasons = [...previous.reasons];
681
718
  }
682
719
  }
720
+ // In a forward, what the reply rules found is the forwarded message, not history. Several
721
+ // clients introduce a forward with the same markup they use for replies ("-------- Original
722
+ // Message --------", Outlook's #divRplyFwdMsg, quote containers), so without this the
723
+ // forwarded text is hidden. Relabelling at the end, rather than turning the anchor into a
724
+ // forward anchor, keeps everything the reply rules know about authored text after a quote:
725
+ // the anchor approach collapsed 48 reference NEW_CONTENT blocks that were visible before.
726
+ // This only ever turns hidden into collapsed. Measured on test/fixtures/clients: 144 tokens in
727
+ // 36 captured forwards were hidden before it, none after.
728
+ if (options.messageIsForward && forwardAnchor === -1) {
729
+ for (const decision of decisions) {
730
+ if (decision.label === 'REPLY_HISTORY') {
731
+ decision.label = 'FORWARDED_CONTENT';
732
+ decision.reasons = [...decision.reasons, 'forward_by_subject'];
733
+ }
734
+ }
735
+ }
683
736
  // Final guard: a message must never come out as nothing but its own footer.
684
737
  //
685
738
  // The signature region can legitimately grow to cover everything a sender typed when the
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/classify/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/classify/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `email-content agreement` subcommand.
3
+ *
4
+ * Measures one annotator against others on the blocks they both labelled. This is the decision
5
+ * gate for adopting a new annotator: its agreement with the strong-model reference, and above all
6
+ * the count of blocks it would hide that every reference calls authored.
7
+ *
8
+ * Reads labels and counts only. Prints no message content.
9
+ */
10
+ import { type AgreementReport } from '../annotate/agreement';
11
+ import { type ParsedArgs } from './args';
12
+ interface AnnotatorSpec {
13
+ name: string;
14
+ model: string;
15
+ promptVersion: string | null;
16
+ }
17
+ /** `model@prompt-version`, or a bare model to take every prompt version's latest label. */
18
+ export declare function parseSpec(spec: string): AnnotatorSpec;
19
+ interface RunCost {
20
+ messages: number;
21
+ promptTokens: number;
22
+ wallMs: number;
23
+ }
24
+ export declare function renderAgreementReport(candidate: string, report: AgreementReport, cost: RunCost): string;
25
+ export declare function agreementCommand(args: ParsedArgs): Promise<number>;
26
+ export {};
27
+ //# sourceMappingURL=agreement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agreement.d.ts","sourceRoot":"","sources":["../../src/cli/agreement.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAqB,KAAK,eAAe,EAAuB,MAAM,uBAAuB,CAAC;AAKrG,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAElF,UAAU,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAKrD;AAqDD,UAAU,OAAO;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CA8CvG;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA2CxE"}