@ozzylabs/feedradar 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +51 -13
- package/README.md +51 -13
- package/dist/agents/_boundary.d.ts +21 -0
- package/dist/agents/_boundary.d.ts.map +1 -1
- package/dist/agents/_boundary.js +34 -0
- package/dist/agents/_boundary.js.map +1 -1
- package/dist/agents/claude-code.d.ts.map +1 -1
- package/dist/agents/claude-code.js +14 -6
- package/dist/agents/claude-code.js.map +1 -1
- package/dist/agents/codex-cli.d.ts.map +1 -1
- package/dist/agents/codex-cli.js +13 -7
- package/dist/agents/codex-cli.js.map +1 -1
- package/dist/agents/copilot.d.ts.map +1 -1
- package/dist/agents/copilot.js +13 -6
- package/dist/agents/copilot.js.map +1 -1
- package/dist/agents/gemini-cli.d.ts.map +1 -1
- package/dist/agents/gemini-cli.js +13 -6
- package/dist/agents/gemini-cli.js.map +1 -1
- package/dist/agents/types.d.ts +26 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/claude-skills/dismiss/SKILL.md +4 -4
- package/dist/claude-skills/research/SKILL.md +2 -3
- package/dist/claude-skills/review/SKILL.md +2 -2
- package/dist/claude-skills/update/SKILL.md +7 -7
- package/dist/cli/_locale.d.ts +96 -0
- package/dist/cli/_locale.d.ts.map +1 -0
- package/dist/cli/_locale.js +130 -0
- package/dist/cli/_locale.js.map +1 -0
- package/dist/cli/_progress.d.ts +30 -1
- package/dist/cli/_progress.d.ts.map +1 -1
- package/dist/cli/_progress.js +9 -1
- package/dist/cli/_progress.js.map +1 -1
- package/dist/cli/dismiss.d.ts.map +1 -1
- package/dist/cli/dismiss.js +61 -54
- package/dist/cli/dismiss.js.map +1 -1
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +91 -60
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +36 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +81 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +15 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +149 -51
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/items.d.ts.map +1 -1
- package/dist/cli/items.js +51 -30
- package/dist/cli/items.js.map +1 -1
- package/dist/cli/research.d.ts.map +1 -1
- package/dist/cli/research.js +138 -109
- package/dist/cli/research.js.map +1 -1
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +114 -92
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/routine/fire.d.ts +3 -2
- package/dist/cli/routine/fire.d.ts.map +1 -1
- package/dist/cli/routine/fire.js +30 -25
- package/dist/cli/routine/fire.js.map +1 -1
- package/dist/cli/routine/generate-pipeline.d.ts +24 -10
- package/dist/cli/routine/generate-pipeline.d.ts.map +1 -1
- package/dist/cli/routine/generate-pipeline.js +158 -83
- package/dist/cli/routine/generate-pipeline.js.map +1 -1
- package/dist/cli/routine/generate-watch.d.ts +56 -1
- package/dist/cli/routine/generate-watch.d.ts.map +1 -1
- package/dist/cli/routine/generate-watch.js +116 -42
- package/dist/cli/routine/generate-watch.js.map +1 -1
- package/dist/cli/routine.d.ts.map +1 -1
- package/dist/cli/routine.js +28 -24
- package/dist/cli/routine.js.map +1 -1
- package/dist/cli/source.d.ts.map +1 -1
- package/dist/cli/source.js +212 -182
- package/dist/cli/source.js.map +1 -1
- package/dist/cli/state.d.ts +43 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +177 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/cli/triage.d.ts.map +1 -1
- package/dist/cli/triage.js +146 -130
- package/dist/cli/triage.js.map +1 -1
- package/dist/cli/undismiss.d.ts.map +1 -1
- package/dist/cli/undismiss.js +32 -25
- package/dist/cli/undismiss.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +77 -61
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +71 -31
- package/dist/cli/watch.js.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.d.ts +9 -2
- package/dist/cli/workflow/generate-combined-with-triage.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.js +120 -71
- package/dist/cli/workflow/generate-combined-with-triage.js.map +1 -1
- package/dist/cli/workflow/generate-combined.d.ts +8 -1
- package/dist/cli/workflow/generate-combined.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined.js +39 -33
- package/dist/cli/workflow/generate-combined.js.map +1 -1
- package/dist/cli/workflow/generate-watch.d.ts +10 -1
- package/dist/cli/workflow/generate-watch.d.ts.map +1 -1
- package/dist/cli/workflow/generate-watch.js +37 -30
- package/dist/cli/workflow/generate-watch.js.map +1 -1
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +28 -23
- package/dist/cli/workflow.js.map +1 -1
- package/dist/core/config.d.ts +2 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +14 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/feeds/html-js.d.ts.map +1 -1
- package/dist/core/feeds/html-js.js +16 -9
- package/dist/core/feeds/html-js.js.map +1 -1
- package/dist/core/feeds/json-api.d.ts.map +1 -1
- package/dist/core/feeds/json-api.js +38 -21
- package/dist/core/feeds/json-api.js.map +1 -1
- package/dist/core/feeds/types.d.ts +9 -0
- package/dist/core/feeds/types.d.ts.map +1 -1
- package/dist/core/filter.d.ts +20 -12
- package/dist/core/filter.d.ts.map +1 -1
- package/dist/core/filter.js +87 -46
- package/dist/core/filter.js.map +1 -1
- package/dist/core/locale.d.ts +69 -0
- package/dist/core/locale.d.ts.map +1 -0
- package/dist/core/locale.js +74 -0
- package/dist/core/locale.js.map +1 -0
- package/dist/core/state.d.ts +20 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +26 -0
- package/dist/core/state.js.map +1 -1
- package/dist/core/triage/prompt.d.ts.map +1 -1
- package/dist/core/triage/prompt.js +18 -4
- package/dist/core/triage/prompt.js.map +1 -1
- package/dist/core/watcher.d.ts +28 -0
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +77 -8
- package/dist/core/watcher.js.map +1 -1
- package/dist/i18n/index.d.ts +57 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +49 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/messages/en.d.ts +1049 -0
- package/dist/i18n/messages/en.d.ts.map +1 -0
- package/dist/i18n/messages/en.js +1152 -0
- package/dist/i18n/messages/en.js.map +1 -0
- package/dist/i18n/messages/ja.d.ts +13 -0
- package/dist/i18n/messages/ja.d.ts.map +1 -0
- package/dist/i18n/messages/ja.js +1010 -0
- package/dist/i18n/messages/ja.js.map +1 -0
- package/dist/schemas/config.d.ts +7 -0
- package/dist/schemas/config.d.ts.map +1 -1
- package/dist/schemas/config.js +5 -0
- package/dist/schemas/config.js.map +1 -1
- package/dist/schemas/item.d.ts +1 -0
- package/dist/schemas/item.d.ts.map +1 -1
- package/dist/schemas/item.js +15 -0
- package/dist/schemas/item.js.map +1 -1
- package/dist/schemas/recipe.d.ts +7 -1
- package/dist/schemas/recipe.d.ts.map +1 -1
- package/dist/schemas/recipe.js +1 -0
- package/dist/schemas/recipe.js.map +1 -1
- package/dist/schemas/source.d.ts +40 -18
- package/dist/schemas/source.d.ts.map +1 -1
- package/dist/schemas/source.js +84 -23
- package/dist/schemas/source.js.map +1 -1
- package/dist/skills/research/SKILL.md +13 -12
- package/dist/skills/review/SKILL.md +13 -12
- package/dist/skills/update/SKILL.md +19 -19
- package/dist/templates/en/agents/AGENTS.md +284 -0
- package/dist/templates/en/claude/CLAUDE.md +5 -0
- package/dist/templates/en/default.md +16 -0
- package/dist/templates/en/digest.md +66 -0
- package/dist/templates/en/feedradar.md +235 -0
- package/dist/templates/{routines → en/routines}/pipeline.yaml.tmpl +93 -34
- package/dist/templates/{routines → en/routines}/watch-daily.yaml +12 -15
- package/dist/templates/{routines → en/routines}/watch.yaml.tmpl +11 -14
- package/dist/templates/{workflows → en/workflows}/combined-with-triage.template.yaml.tmpl +3 -3
- package/dist/templates/{workflows → en/workflows}/combined.template.yaml.tmpl +6 -6
- package/dist/templates/{workflows → en/workflows}/watch.template.yaml.tmpl +8 -8
- package/dist/templates/{workflows → en/workflows}/watch.yaml +3 -3
- package/dist/templates/{agents → ja/agents}/AGENTS.md +16 -16
- package/dist/templates/{digest.md → ja/digest.md} +5 -6
- package/dist/templates/{feedradar.md → ja/feedradar.md} +12 -12
- package/dist/templates/ja/routines/pipeline.yaml.tmpl +267 -0
- package/dist/templates/ja/routines/watch-daily.yaml +151 -0
- package/dist/templates/ja/routines/watch.yaml.tmpl +145 -0
- package/dist/templates/ja/workflows/combined-with-triage.template.yaml.tmpl +123 -0
- package/dist/templates/ja/workflows/combined.template.yaml.tmpl +109 -0
- package/dist/templates/ja/workflows/watch.template.yaml.tmpl +100 -0
- package/dist/templates/ja/workflows/watch.yaml +73 -0
- package/package.json +1 -1
- /package/dist/templates/{claude → ja/claude}/CLAUDE.md +0 -0
- /package/dist/templates/{default.md → ja/default.md} +0 -0
package/dist/core/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/core/filter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CACnB,QAAgB,EAChB,OAAe,EACf,IAAe,EACf,eAAwB;IAExB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,8EAA8E;IAC9E,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,4CAA4C;IAC5C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/core/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* i18n locale foundation (ADR-0021, epic #307).
|
|
4
|
+
*
|
|
5
|
+
* This module only decides *which language* the CLI runs in; it does not yet
|
|
6
|
+
* translate any user-facing copy (that lands in a later P2 issue). The single
|
|
7
|
+
* responsibility here is resolving an effective {@link Locale} from the layered
|
|
8
|
+
* sources documented in ADR-0021 and exposing a helper to apply that locale to
|
|
9
|
+
* zod's built-in localized error messages.
|
|
10
|
+
*/
|
|
11
|
+
/** Supported UI locales. Kept deliberately small until P2 adds translations. */
|
|
12
|
+
export type Locale = "en" | "ja";
|
|
13
|
+
/**
|
|
14
|
+
* zod enum mirroring {@link Locale}. Used both for `config.locale` validation
|
|
15
|
+
* (via `RadarConfigSchema`) and for the lenient {@link resolveLocale} parsing
|
|
16
|
+
* of `--lang` / `RADAR_LANG` inputs.
|
|
17
|
+
*/
|
|
18
|
+
export declare const LocaleSchema: z.ZodEnum<{
|
|
19
|
+
en: "en";
|
|
20
|
+
ja: "ja";
|
|
21
|
+
}>;
|
|
22
|
+
/** Hard-coded fallback when no source supplies a (valid) locale. */
|
|
23
|
+
export declare const DEFAULT_LOCALE: Locale;
|
|
24
|
+
export interface ResolveLocaleInput {
|
|
25
|
+
/** Value from the `--lang <en|ja>` CLI flag, if the user passed one. */
|
|
26
|
+
flag?: string | undefined;
|
|
27
|
+
/** Value from the `RADAR_LANG` environment variable, if set. */
|
|
28
|
+
env?: string | undefined;
|
|
29
|
+
/** `locale` field from `radar.config.yaml`, if present. */
|
|
30
|
+
config?: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
export interface ResolveLocaleOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Sink for the "invalid locale, falling back to en" warning. Defaults to
|
|
35
|
+
* `console.warn`; tests inject a spy. Mirrors the `warn` injection pattern in
|
|
36
|
+
* `src/core/watcher.ts`.
|
|
37
|
+
*/
|
|
38
|
+
warn?: (message: string) => void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the effective locale from the layered sources.
|
|
42
|
+
*
|
|
43
|
+
* Priority (highest first), per ADR-0021:
|
|
44
|
+
*
|
|
45
|
+
* `--lang` flag > `RADAR_LANG` env > `config.locale` > default (`en`)
|
|
46
|
+
*
|
|
47
|
+
* Each source is validated independently against {@link LocaleSchema}. An
|
|
48
|
+
* invalid value does **not** fall through to the next source — it emits a warn
|
|
49
|
+
* and resolves to {@link DEFAULT_LOCALE}. Rationale: a user who wrote
|
|
50
|
+
* `--lang frnch` made a mistake at *that* layer; silently honoring a lower
|
|
51
|
+
* layer would mask the typo and surprise them. Empty / unset sources (`""`,
|
|
52
|
+
* `undefined`) are skipped (not treated as invalid) so callers can pass raw
|
|
53
|
+
* argv / env values without pre-filtering.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveLocale(input: ResolveLocaleInput, options?: ResolveLocaleOptions): Locale;
|
|
56
|
+
/**
|
|
57
|
+
* Apply the resolved locale to zod's global error-message locale.
|
|
58
|
+
*
|
|
59
|
+
* Calling this once (per command, right after {@link resolveLocale}) switches
|
|
60
|
+
* zod's built-in messages to the matching language so schema-violation output
|
|
61
|
+
* (e.g. `radar.config.yaml schema violation`) is localized "for free". This is
|
|
62
|
+
* the only place this PR consumes the resolved locale; bespoke message
|
|
63
|
+
* translation arrives in P2.
|
|
64
|
+
*
|
|
65
|
+
* `z.config` mutates global zod state, so this is idempotent — calling it again
|
|
66
|
+
* with a different locale simply overwrites the previous setting.
|
|
67
|
+
*/
|
|
68
|
+
export declare function applyZodLocale(locale: Locale): void;
|
|
69
|
+
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/core/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;EAAuB,CAAC;AAEjD,oEAAoE;AACpE,eAAO,MAAM,cAAc,EAAE,MAAa,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAqBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAgBnD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* zod enum mirroring {@link Locale}. Used both for `config.locale` validation
|
|
4
|
+
* (via `RadarConfigSchema`) and for the lenient {@link resolveLocale} parsing
|
|
5
|
+
* of `--lang` / `RADAR_LANG` inputs.
|
|
6
|
+
*/
|
|
7
|
+
export const LocaleSchema = z.enum(["en", "ja"]);
|
|
8
|
+
/** Hard-coded fallback when no source supplies a (valid) locale. */
|
|
9
|
+
export const DEFAULT_LOCALE = "en";
|
|
10
|
+
/**
|
|
11
|
+
* Resolve the effective locale from the layered sources.
|
|
12
|
+
*
|
|
13
|
+
* Priority (highest first), per ADR-0021:
|
|
14
|
+
*
|
|
15
|
+
* `--lang` flag > `RADAR_LANG` env > `config.locale` > default (`en`)
|
|
16
|
+
*
|
|
17
|
+
* Each source is validated independently against {@link LocaleSchema}. An
|
|
18
|
+
* invalid value does **not** fall through to the next source — it emits a warn
|
|
19
|
+
* and resolves to {@link DEFAULT_LOCALE}. Rationale: a user who wrote
|
|
20
|
+
* `--lang frnch` made a mistake at *that* layer; silently honoring a lower
|
|
21
|
+
* layer would mask the typo and surprise them. Empty / unset sources (`""`,
|
|
22
|
+
* `undefined`) are skipped (not treated as invalid) so callers can pass raw
|
|
23
|
+
* argv / env values without pre-filtering.
|
|
24
|
+
*/
|
|
25
|
+
export function resolveLocale(input, options = {}) {
|
|
26
|
+
const warn = options.warn ?? ((m) => console.warn(m));
|
|
27
|
+
const layers = [
|
|
28
|
+
{ source: "--lang", value: input.flag },
|
|
29
|
+
{ source: "RADAR_LANG", value: input.env },
|
|
30
|
+
{ source: "config.locale", value: input.config },
|
|
31
|
+
];
|
|
32
|
+
for (const { source, value } of layers) {
|
|
33
|
+
if (value === undefined || value === "") {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const parsed = LocaleSchema.safeParse(value);
|
|
37
|
+
if (parsed.success) {
|
|
38
|
+
return parsed.data;
|
|
39
|
+
}
|
|
40
|
+
warn(`invalid locale '${value}' from ${source}; falling back to '${DEFAULT_LOCALE}' (supported: en, ja)`);
|
|
41
|
+
return DEFAULT_LOCALE;
|
|
42
|
+
}
|
|
43
|
+
return DEFAULT_LOCALE;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Apply the resolved locale to zod's global error-message locale.
|
|
47
|
+
*
|
|
48
|
+
* Calling this once (per command, right after {@link resolveLocale}) switches
|
|
49
|
+
* zod's built-in messages to the matching language so schema-violation output
|
|
50
|
+
* (e.g. `radar.config.yaml schema violation`) is localized "for free". This is
|
|
51
|
+
* the only place this PR consumes the resolved locale; bespoke message
|
|
52
|
+
* translation arrives in P2.
|
|
53
|
+
*
|
|
54
|
+
* `z.config` mutates global zod state, so this is idempotent — calling it again
|
|
55
|
+
* with a different locale simply overwrites the previous setting.
|
|
56
|
+
*/
|
|
57
|
+
export function applyZodLocale(locale) {
|
|
58
|
+
switch (locale) {
|
|
59
|
+
case "ja":
|
|
60
|
+
z.config(z.locales.ja());
|
|
61
|
+
return;
|
|
62
|
+
case "en":
|
|
63
|
+
z.config(z.locales.en());
|
|
64
|
+
return;
|
|
65
|
+
default: {
|
|
66
|
+
// Exhaustiveness guard — adding a Locale without a branch is a compile
|
|
67
|
+
// error.
|
|
68
|
+
const _exhaustive = locale;
|
|
69
|
+
void _exhaustive;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/core/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEjD,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAW,IAAI,CAAC;AAoB3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAyB,EACzB,UAAgC,EAAE;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAiE;QAC3E,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;QACvC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE;QAC1C,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;KACjD,CAAC;IACF,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CACF,mBAAmB,KAAK,UAAU,MAAM,sBAAsB,cAAc,uBAAuB,CACpG,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,IAAI;YACP,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO;QACT,KAAK,IAAI;YACP,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO;QACT,OAAO,CAAC,CAAC,CAAC;YACR,uEAAuE;YACvE,SAAS;YACT,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,KAAK,WAAW,CAAC;YACjB,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/core/state.d.ts
CHANGED
|
@@ -7,6 +7,26 @@ import type { SourceState } from "../schemas/index.js";
|
|
|
7
7
|
* as "fresh start" without branching.
|
|
8
8
|
*/
|
|
9
9
|
export declare function loadSourceState(stateDir: string, sourceId: string): Promise<SourceState>;
|
|
10
|
+
/**
|
|
11
|
+
* Apply a FIFO (keep-newest) cap to a `lastSeenIds` list.
|
|
12
|
+
*
|
|
13
|
+
* `lastSeenIds` is append-only at the persistence layer: new ids are pushed to
|
|
14
|
+
* the *end* and already-seen ids keep their original position (re-adding to a
|
|
15
|
+
* `Set` does not move them), so the array is ordered oldest-first. When `max`
|
|
16
|
+
* is a positive integer and the list exceeds it, we keep the trailing `max`
|
|
17
|
+
* entries (the most recently appended ids) and drop the oldest from the front.
|
|
18
|
+
*
|
|
19
|
+
* This is safe for the facet-sweep firehose (ADR-0017) that motivated the cap:
|
|
20
|
+
* facets are walked publishedAt-descending, so an id old enough to fall out of
|
|
21
|
+
* the trailing window is very unlikely to reappear in a later sweep. If it
|
|
22
|
+
* somehow does, the worst case is re-emitting one already-seen item — not data
|
|
23
|
+
* loss.
|
|
24
|
+
*
|
|
25
|
+
* `max` undefined / non-positive disables the cap and returns the input
|
|
26
|
+
* unchanged (existing source YAMLs that omit `maxSeenIds` keep their current
|
|
27
|
+
* unbounded behavior).
|
|
28
|
+
*/
|
|
29
|
+
export declare function capSeenIds(ids: string[], max?: number): string[];
|
|
10
30
|
/** Persist a source's state, creating the directory if needed. */
|
|
11
31
|
export declare function saveSourceState(stateDir: string, state: SourceState): Promise<void>;
|
|
12
32
|
//# sourceMappingURL=state.d.ts.map
|
package/dist/core/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAgBvD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU9F;AAED,kEAAkE;AAClE,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF"}
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAgBvD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU9F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIhE;AAED,kEAAkE;AAClE,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF"}
|
package/dist/core/state.js
CHANGED
|
@@ -32,6 +32,32 @@ export async function loadSourceState(stateDir, sourceId) {
|
|
|
32
32
|
const candidate = { ...(parsed ?? {}), sourceId: parsed?.sourceId ?? sourceId };
|
|
33
33
|
return SourceStateSchema.parse(candidate);
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Apply a FIFO (keep-newest) cap to a `lastSeenIds` list.
|
|
37
|
+
*
|
|
38
|
+
* `lastSeenIds` is append-only at the persistence layer: new ids are pushed to
|
|
39
|
+
* the *end* and already-seen ids keep their original position (re-adding to a
|
|
40
|
+
* `Set` does not move them), so the array is ordered oldest-first. When `max`
|
|
41
|
+
* is a positive integer and the list exceeds it, we keep the trailing `max`
|
|
42
|
+
* entries (the most recently appended ids) and drop the oldest from the front.
|
|
43
|
+
*
|
|
44
|
+
* This is safe for the facet-sweep firehose (ADR-0017) that motivated the cap:
|
|
45
|
+
* facets are walked publishedAt-descending, so an id old enough to fall out of
|
|
46
|
+
* the trailing window is very unlikely to reappear in a later sweep. If it
|
|
47
|
+
* somehow does, the worst case is re-emitting one already-seen item — not data
|
|
48
|
+
* loss.
|
|
49
|
+
*
|
|
50
|
+
* `max` undefined / non-positive disables the cap and returns the input
|
|
51
|
+
* unchanged (existing source YAMLs that omit `maxSeenIds` keep their current
|
|
52
|
+
* unbounded behavior).
|
|
53
|
+
*/
|
|
54
|
+
export function capSeenIds(ids, max) {
|
|
55
|
+
if (max === undefined || !Number.isInteger(max) || max <= 0)
|
|
56
|
+
return ids;
|
|
57
|
+
if (ids.length <= max)
|
|
58
|
+
return ids;
|
|
59
|
+
return ids.slice(ids.length - max);
|
|
60
|
+
}
|
|
35
61
|
/** Persist a source's state, creating the directory if needed. */
|
|
36
62
|
export async function saveSourceState(stateDir, state) {
|
|
37
63
|
const validated = SourceStateSchema.parse(state);
|
package/dist/core/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,QAAgB;IACnD,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAmC,CAAC;IAChE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC;IAChF,OAAO,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAkB;IACxE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,QAAgB;IACnD,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAmC,CAAC;IAChE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC;IAChF,OAAO,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,GAAa,EAAE,GAAY;IACpD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACxE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAkB;IACxE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/core/triage/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/core/triage/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAuGlE,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,wBAAwB,GAAG,MAAM,CAmDrF"}
|
|
@@ -60,9 +60,17 @@ function escapeAttribute(value) {
|
|
|
60
60
|
/**
|
|
61
61
|
* Render a single item's untrusted half (title + summary + raw) wrapped in
|
|
62
62
|
* the per-item `<untrusted_item>` boundary. Trusted metadata (id / sourceId /
|
|
63
|
-
* matchedKeywords) is exposed as attributes on the opening
|
|
64
|
-
* boundary — so the agent can use those values as routing
|
|
65
|
-
* the `id` field of the returned JSON) without crossing the
|
|
63
|
+
* matchedKeywords / matchedFields) is exposed as attributes on the opening
|
|
64
|
+
* tag — outside the boundary — so the agent can use those values as routing
|
|
65
|
+
* hints (e.g. for the `id` field of the returned JSON) without crossing the
|
|
66
|
+
* trust boundary.
|
|
67
|
+
*
|
|
68
|
+
* `matched_fields` (#332) tells the agent *where* the keyword hit landed. When
|
|
69
|
+
* it contains only `summary` (and not `title`), the item is a body-mention
|
|
70
|
+
* candidate — a frequent false-positive class (an article that merely
|
|
71
|
+
* references another service's keyword in its summary). The agent is
|
|
72
|
+
* instructed to weigh a summary-only hit lower than a title hit so these get
|
|
73
|
+
* caught at triage instead of leaking into research.
|
|
66
74
|
*
|
|
67
75
|
* Optional fields (`summary`, `raw`) are omitted from the block rather than
|
|
68
76
|
* rendered as `(none)` so the prompt stays compact and a missing summary is
|
|
@@ -72,6 +80,7 @@ function renderItemBlock(item) {
|
|
|
72
80
|
const idAttr = escapeAttribute(item.id);
|
|
73
81
|
const sourceAttr = escapeAttribute(item.sourceId);
|
|
74
82
|
const keywordsAttr = escapeAttribute(item.matchedKeywords.join(","));
|
|
83
|
+
const fieldsAttr = escapeAttribute(item.matchedFields.join(","));
|
|
75
84
|
const untrustedLines = [`title: ${item.title}`];
|
|
76
85
|
if (item.summary !== undefined) {
|
|
77
86
|
untrustedLines.push(`summary: ${item.summary}`);
|
|
@@ -80,7 +89,7 @@ function renderItemBlock(item) {
|
|
|
80
89
|
untrustedLines.push(`raw: ${JSON.stringify(item.raw)}`);
|
|
81
90
|
}
|
|
82
91
|
return [
|
|
83
|
-
`<untrusted_item id="${idAttr}" source="${sourceAttr}" matched_keywords="${keywordsAttr}">`,
|
|
92
|
+
`<untrusted_item id="${idAttr}" source="${sourceAttr}" matched_keywords="${keywordsAttr}" matched_fields="${fieldsAttr}">`,
|
|
84
93
|
untrustedLines.join("\n"),
|
|
85
94
|
"</untrusted_item>",
|
|
86
95
|
].join("\n");
|
|
@@ -151,6 +160,11 @@ export function buildTriagePrompt({ items, policy }) {
|
|
|
151
160
|
" invent new ids, do not duplicate ids.",
|
|
152
161
|
' - Set "group" only when "decision" is "digest". Omit otherwise.',
|
|
153
162
|
' - Keep "reason" under 200 characters. It is shown to the operator as-is.',
|
|
163
|
+
" - The matched_fields attribute lists which fields the keyword matched in.",
|
|
164
|
+
' When it is only "summary" (the keyword does NOT appear in the title),',
|
|
165
|
+
" the item likely only mentions the keyword in passing — weigh it lower",
|
|
166
|
+
" and prefer dismiss / unsure unless the summary clearly makes it the",
|
|
167
|
+
" main subject.",
|
|
154
168
|
"</triage_request>",
|
|
155
169
|
].join("\n");
|
|
156
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/core/triage/prompt.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/core/triage/prompt.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAa,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,cAAc,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,uBAAuB,MAAM,aAAa,UAAU,uBAAuB,YAAY,qBAAqB,UAAU,IAAI;QAC1H,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAA4B;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO;QACL,kBAAkB;QAClB,0EAA0E;QAC1E,2DAA2D;QAC3D,EAAE;QACF,iDAAiD;QACjD,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,oEAAoE;QACpE,sEAAsE;QACtE,wEAAwE;QACxE,uDAAuD;QACvD,EAAE;QACF,UAAU;QACV,MAAM,CAAC,KAAK;QACZ,WAAW;QACX,EAAE;QACF,SAAS;QACT,UAAU;QACV,UAAU;QACV,EAAE;QACF,4EAA4E,MAAM,CAAC,mBAAmB,EAAE;QACxG,EAAE;QACF,uEAAuE;QACvE,6DAA6D;QAC7D,EAAE;QACF,gCAAgC;QAChC,KAAK;QACL,wEAAwE;QACxE,+DAA+D;QAC/D,iDAAiD;QACjD,uCAAuC;QACvC,iFAAiF;QACjF,KAAK;QACL,EAAE;QACF,QAAQ;QACR,sEAAsE;QACtE,2CAA2C;QAC3C,mEAAmE;QACnE,4EAA4E;QAC5E,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,mBAAmB;QACnB,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
package/dist/core/watcher.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Translator } from "../i18n/index.js";
|
|
1
2
|
import type { Item, Source, SourceState } from "../schemas/index.js";
|
|
2
3
|
import type { FeedAdapter, FeedFetchDiag, FetchLike } from "./feeds/index.js";
|
|
3
4
|
import { installChromium, type ProbeOptions } from "./playwright-check.js";
|
|
@@ -78,6 +79,16 @@ export interface WatchRunOptions extends WorkspacePaths {
|
|
|
78
79
|
* with no progress wiring — byte-equivalent to the pre-#198 behaviour.
|
|
79
80
|
*/
|
|
80
81
|
progress?: ProgressReporter;
|
|
82
|
+
/**
|
|
83
|
+
* Translator for the user-facing watch-flow progress markers (#337 / ADR-0021).
|
|
84
|
+
* Threaded alongside {@link progress} so the per-source page / completion
|
|
85
|
+
* labels (and the html-js `Still waiting…` reminder) track the resolved UI
|
|
86
|
+
* locale. Defaults to an `en` translator when unset so existing callers that
|
|
87
|
+
* only care about the fetch mechanics keep their English output. The embedded
|
|
88
|
+
* values (source id, page counters, mm:ss, item counts) are functional fields
|
|
89
|
+
* and stay verbatim across locales.
|
|
90
|
+
*/
|
|
91
|
+
translate?: Translator;
|
|
81
92
|
}
|
|
82
93
|
export interface WatchRunResult {
|
|
83
94
|
/** Map of sourceId → detected (filter-passing, not previously seen) items. */
|
|
@@ -147,6 +158,23 @@ export declare function loadSources(sourcesDir: string, onError: (message: strin
|
|
|
147
158
|
* behaviour against this single source of truth.
|
|
148
159
|
*/
|
|
149
160
|
export declare function shouldEnableProgress(sources: Source[], backfill: boolean): boolean;
|
|
161
|
+
/**
|
|
162
|
+
* 前回 on-disk state(`prev`)と今回書き込もうとしている state(`next`)を比較し、
|
|
163
|
+
* `lastFetchedAt` 以外に意味のある差分があるかを返す。
|
|
164
|
+
*
|
|
165
|
+
* 背景(#326): `lastFetchedAt` は表示専用のタイムスタンプ(`radar source list -v`)で、
|
|
166
|
+
* fetch ロジック(conditional GET の `etag` / `lastModified`)には使われない。新着 0 件の
|
|
167
|
+
* 静かな run でも毎回更新されるため、これだけが変わった state を保存すると routine/workflow の
|
|
168
|
+
* 自動コミットガード(`git diff --quiet state/`)が毎回発火し、no-op コミット/PR/merge が積もる。
|
|
169
|
+
*
|
|
170
|
+
* そこで「`lastFetchedAt` 以外の機能的フィールド(`lastEtag` / `lastModified` /
|
|
171
|
+
* `lastSeenIds`)に差分があるときだけ保存する」ための判定をここに集約する。`true` を返した
|
|
172
|
+
* 場合のみ呼び出し側は `saveSourceState` する。
|
|
173
|
+
*
|
|
174
|
+
* 注: `result.states` には従来どおり projected state を入れるため、`source test` などの
|
|
175
|
+
* イントロスペクションは影響を受けない(保存の有無のみを切り替える)。
|
|
176
|
+
*/
|
|
177
|
+
export declare function stateChangedBeyondLastFetchedAt(prev: SourceState, next: SourceState): boolean;
|
|
150
178
|
/**
|
|
151
179
|
* Execute one full watch cycle.
|
|
152
180
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/core/watcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK9E,OAAO,EAEL,eAAe,EAGf,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA2CtD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC;IACnD,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,YAAY,CAAC;IACtC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,eAAe,CAAC;IAC7C;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/core/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/core/watcher.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { access, readdir, readFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { createTranslator } from "../i18n/index.js";
|
|
4
5
|
import { SourceSchema } from "../schemas/index.js";
|
|
5
6
|
import { getFeedAdapter } from "./feeds/index.js";
|
|
6
7
|
import { filterItems } from "./filter.js";
|
|
7
8
|
import { detectInjection } from "./injection-detector.js";
|
|
8
9
|
import { saveItems } from "./items.js";
|
|
9
10
|
import { CHROMIUM_MISSING_HINT, installChromium, PLAYWRIGHT_MODULE_MISSING_HINT, probePlaywright, } from "./playwright-check.js";
|
|
10
|
-
import { loadSourceState, saveSourceState } from "./state.js";
|
|
11
|
+
import { capSeenIds, loadSourceState, saveSourceState } from "./state.js";
|
|
11
12
|
async function pathExists(p) {
|
|
12
13
|
try {
|
|
13
14
|
await access(p);
|
|
@@ -130,6 +131,39 @@ export function shouldEnableProgress(sources, backfill) {
|
|
|
130
131
|
}
|
|
131
132
|
return false;
|
|
132
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* 前回 on-disk state(`prev`)と今回書き込もうとしている state(`next`)を比較し、
|
|
136
|
+
* `lastFetchedAt` 以外に意味のある差分があるかを返す。
|
|
137
|
+
*
|
|
138
|
+
* 背景(#326): `lastFetchedAt` は表示専用のタイムスタンプ(`radar source list -v`)で、
|
|
139
|
+
* fetch ロジック(conditional GET の `etag` / `lastModified`)には使われない。新着 0 件の
|
|
140
|
+
* 静かな run でも毎回更新されるため、これだけが変わった state を保存すると routine/workflow の
|
|
141
|
+
* 自動コミットガード(`git diff --quiet state/`)が毎回発火し、no-op コミット/PR/merge が積もる。
|
|
142
|
+
*
|
|
143
|
+
* そこで「`lastFetchedAt` 以外の機能的フィールド(`lastEtag` / `lastModified` /
|
|
144
|
+
* `lastSeenIds`)に差分があるときだけ保存する」ための判定をここに集約する。`true` を返した
|
|
145
|
+
* 場合のみ呼び出し側は `saveSourceState` する。
|
|
146
|
+
*
|
|
147
|
+
* 注: `result.states` には従来どおり projected state を入れるため、`source test` などの
|
|
148
|
+
* イントロスペクションは影響を受けない(保存の有無のみを切り替える)。
|
|
149
|
+
*/
|
|
150
|
+
export function stateChangedBeyondLastFetchedAt(prev, next) {
|
|
151
|
+
if (prev.lastEtag !== next.lastEtag)
|
|
152
|
+
return true;
|
|
153
|
+
if (prev.lastModified !== next.lastModified)
|
|
154
|
+
return true;
|
|
155
|
+
const prevIds = prev.lastSeenIds;
|
|
156
|
+
const nextIds = next.lastSeenIds;
|
|
157
|
+
if (prevIds.length !== nextIds.length)
|
|
158
|
+
return true;
|
|
159
|
+
// lastSeenIds は順序も含めて比較する(loadSourceState で読んだ並びを再書き込みする
|
|
160
|
+
// だけなら不変。新規 id の追加は必ず末尾に積まれるので長さ差で先に検出される)。
|
|
161
|
+
for (let i = 0; i < prevIds.length; i++) {
|
|
162
|
+
if (prevIds[i] !== nextIds[i])
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
133
167
|
/**
|
|
134
168
|
* Execute one full watch cycle.
|
|
135
169
|
*
|
|
@@ -154,6 +188,9 @@ export async function watchRun(options) {
|
|
|
154
188
|
const getAdapter = options.getAdapter ?? getFeedAdapter;
|
|
155
189
|
const env = options.env ?? process.env;
|
|
156
190
|
const installImpl = options.installChromiumImpl ?? installChromium;
|
|
191
|
+
// Translator for the user-facing progress markers (#337). Defaults to `en`
|
|
192
|
+
// so existing callers that do not pass a locale keep their English output.
|
|
193
|
+
const t = options.translate ?? createTranslator("en");
|
|
157
194
|
const sources = await loadSources(paths.sourcesDir, (m) => warn(`watch run: ${m}`));
|
|
158
195
|
const filtered = options.sourceId ? sources.filter((s) => s.id === options.sourceId) : sources;
|
|
159
196
|
if (filtered.length === 0) {
|
|
@@ -255,7 +292,7 @@ export async function watchRun(options) {
|
|
|
255
292
|
// sub-phases (html-js Chromium lifecycle, json-api page x/n) between
|
|
256
293
|
// here and `Completed`. Side metrics for the spinner row default to
|
|
257
294
|
// the source kind so even non-paginating adapters surface useful info.
|
|
258
|
-
progress?.phase(
|
|
295
|
+
progress?.phase(t("cli.progress.watchFetching", { sourceId: source.id }), t("cli.progress.watchKindInfo", { kind: source.kind }));
|
|
259
296
|
progress?.start(`[${source.id}] ${source.kind}`);
|
|
260
297
|
const sourceStartedAt = Date.now();
|
|
261
298
|
try {
|
|
@@ -277,6 +314,9 @@ export async function watchRun(options) {
|
|
|
277
314
|
// the parent `[<source-id>] …` marker. html-js uses it for the
|
|
278
315
|
// Chromium lifecycle; other kinds currently ignore it.
|
|
279
316
|
onProgress: progress,
|
|
317
|
+
// Thread the locale translator so the html-js `Still waiting…`
|
|
318
|
+
// reminder is localized on the same path as the reporter (#337).
|
|
319
|
+
translate: t,
|
|
280
320
|
// Per-page hook for paginating adapters (json-api). We translate
|
|
281
321
|
// each page event into a phase marker so non-TTY logs preserve the
|
|
282
322
|
// narrative ("Page 3/80: 100 items") and TTY rows pick up the
|
|
@@ -290,8 +330,13 @@ export async function watchRun(options) {
|
|
|
290
330
|
const facetLabel = facet
|
|
291
331
|
? `${facet.name}=${facet.value} (${facet.index}/${facet.total}) `
|
|
292
332
|
: "";
|
|
293
|
-
|
|
294
|
-
|
|
333
|
+
progress.phase(t("cli.progress.watchPage", {
|
|
334
|
+
sourceId: source.id,
|
|
335
|
+
facet: facetLabel,
|
|
336
|
+
page: pageIndex + 1,
|
|
337
|
+
pageTotal,
|
|
338
|
+
items: pageItems,
|
|
339
|
+
}));
|
|
295
340
|
progress.update({
|
|
296
341
|
...(facet
|
|
297
342
|
? { [facet.name]: `${facet.value} (${facet.index}/${facet.total})` }
|
|
@@ -311,7 +356,7 @@ export async function watchRun(options) {
|
|
|
311
356
|
}
|
|
312
357
|
catch (e) {
|
|
313
358
|
const message = e instanceof Error ? e.message : String(e);
|
|
314
|
-
progress?.fail(
|
|
359
|
+
progress?.fail(t("cli.progress.watchFailed", { sourceId: source.id }), message);
|
|
315
360
|
error(`watch run: '${source.id}' fetch failed: ${message}`);
|
|
316
361
|
result.errors.push({ sourceId: source.id, message });
|
|
317
362
|
continue;
|
|
@@ -379,17 +424,37 @@ export async function watchRun(options) {
|
|
|
379
424
|
warn(`watch run: '${source.id}' ${flagged.length} item(s) tripped the prompt-injection pre-filter (audit-only; status unchanged). See injectionFlags in items/<id>.yaml.`);
|
|
380
425
|
}
|
|
381
426
|
}
|
|
427
|
+
// Apply the per-source FIFO cap (#333) before persisting. `seenIds` is
|
|
428
|
+
// ordered oldest-first (previousState ids first, then any genuinely new
|
|
429
|
+
// fetched ids appended — re-adding an existing id does not reorder a Set),
|
|
430
|
+
// so `capSeenIds` keeps the newest N and drops the oldest. This is the sole
|
|
431
|
+
// persistence point for `lastSeenIds` (json-api's facet adapter never
|
|
432
|
+
// returns it), so trimming here bounds the firehose growth across every
|
|
433
|
+
// kind. When `maxSeenIds` is unset the list is returned unchanged.
|
|
434
|
+
//
|
|
435
|
+
// The trim also interacts correctly with the #326 no-op-commit guard
|
|
436
|
+
// below: dropping ids changes `lastSeenIds` (a functional field), so
|
|
437
|
+
// `stateChangedBeyondLastFetchedAt` returns true and the trimmed state is
|
|
438
|
+
// persisted — the very first capped run shrinks the on-disk file.
|
|
439
|
+
const cappedSeenIds = capSeenIds(Array.from(seenIds), source.maxSeenIds);
|
|
382
440
|
const nextState = {
|
|
383
441
|
sourceId: source.id,
|
|
384
442
|
lastFetchedAt: nextStatePatch.lastFetchedAt ?? previousState.lastFetchedAt,
|
|
385
443
|
lastEtag: nextStatePatch.lastEtag ?? previousState.lastEtag,
|
|
386
444
|
lastModified: nextStatePatch.lastModified ?? previousState.lastModified,
|
|
387
|
-
lastSeenIds:
|
|
445
|
+
lastSeenIds: cappedSeenIds,
|
|
388
446
|
};
|
|
389
447
|
// In dry-run mode we still surface the would-be state through
|
|
390
448
|
// `result.states` so callers can introspect the projected delta, but we
|
|
391
449
|
// never persist it.
|
|
392
|
-
|
|
450
|
+
//
|
|
451
|
+
// 静かな run の no-op コミット抑制(#326): 前回 on-disk state との差分が
|
|
452
|
+
// `lastFetchedAt` のみなら保存をスキップする。`lastFetchedAt` は表示専用で
|
|
453
|
+
// fetch ロジック不参照のため、これだけ更新しても機能的な意味はない。書き込みを
|
|
454
|
+
// 止めることで routine/workflow の `git diff --quiet state/` ガードが発火せず、
|
|
455
|
+
// 新着 0 件 run のたびに no-op コミット/PR/merge が積もる問題を根絶する。
|
|
456
|
+
// bootstrap は `lastSeenIds` が必ず増えるのでこの分岐に入らない。
|
|
457
|
+
if (!options.dryRun && stateChangedBeyondLastFetchedAt(previousState, nextState)) {
|
|
393
458
|
await saveSourceState(paths.stateDir, nextState);
|
|
394
459
|
}
|
|
395
460
|
result.detected[source.id] = detectedItems;
|
|
@@ -403,7 +468,11 @@ export async function watchRun(options) {
|
|
|
403
468
|
// continue to work.
|
|
404
469
|
if (progress) {
|
|
405
470
|
const duration = Date.now() - sourceStartedAt;
|
|
406
|
-
progress.succeed(
|
|
471
|
+
progress.succeed(t("cli.progress.watchSourceCompleted", {
|
|
472
|
+
sourceId: source.id,
|
|
473
|
+
total: fetched.length,
|
|
474
|
+
fresh: detectedItems.length,
|
|
475
|
+
}), duration);
|
|
407
476
|
}
|
|
408
477
|
}
|
|
409
478
|
return result;
|
package/dist/core/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/core/watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/core/watcher.ts"],"names":[],"mappings":"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"}
|