@posthog/agent 1.16.6 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/claude-cli/cli.js +3617 -0
- package/dist/claude-cli/package.json +3 -0
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/src/agent.d.ts +0 -3
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +6 -27
- package/dist/src/agent.js.map +1 -1
- package/dist/src/agents/research.d.ts +1 -1
- package/dist/src/agents/research.d.ts.map +1 -1
- package/dist/src/agents/research.js +84 -53
- package/dist/src/agents/research.js.map +1 -1
- package/dist/src/file-manager.d.ts +3 -21
- package/dist/src/file-manager.d.ts.map +1 -1
- package/dist/src/file-manager.js +15 -47
- package/dist/src/file-manager.js.map +1 -1
- package/dist/src/git-manager.d.ts.map +1 -1
- package/dist/src/git-manager.js +8 -1
- package/dist/src/git-manager.js.map +1 -1
- package/dist/src/posthog-api.d.ts +6 -1
- package/dist/src/posthog-api.d.ts.map +1 -1
- package/dist/src/posthog-api.js +28 -0
- package/dist/src/posthog-api.js.map +1 -1
- package/dist/src/task-progress-reporter.d.ts.map +1 -1
- package/dist/src/task-progress-reporter.js +0 -1
- package/dist/src/task-progress-reporter.js.map +1 -1
- package/dist/src/types.d.ts +21 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/workflow/steps/plan.d.ts.map +1 -1
- package/dist/src/workflow/steps/plan.js +26 -18
- package/dist/src/workflow/steps/plan.js.map +1 -1
- package/dist/src/workflow/steps/research.d.ts.map +1 -1
- package/dist/src/workflow/steps/research.js +100 -66
- package/dist/src/workflow/steps/research.js.map +1 -1
- package/dist/src/workflow/types.d.ts +0 -2
- package/dist/src/workflow/types.d.ts.map +1 -1
- package/dist/templates/plan-template.md +1 -5
- package/package.json +2 -6
- package/src/agent.ts +7 -31
- package/src/agents/research.ts +84 -53
- package/src/file-manager.ts +18 -73
- package/src/git-manager.ts +7 -1
- package/src/posthog-api.ts +33 -1
- package/src/task-progress-reporter.ts +0 -1
- package/src/templates/plan-template.md +1 -5
- package/src/types.ts +25 -2
- package/src/workflow/steps/plan.ts +28 -21
- package/src/workflow/steps/research.ts +109 -74
- package/src/workflow/types.ts +0 -2
- package/dist/_virtual/_commonjsHelpers.js +0 -6
- package/dist/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/_virtual/index.js +0 -4
- package/dist/_virtual/index.js.map +0 -1
- package/dist/node_modules/@ai-sdk/anthropic/dist/index.js +0 -1154
- package/dist/node_modules/@ai-sdk/anthropic/dist/index.js.map +0 -1
- package/dist/node_modules/@ai-sdk/provider/dist/index.js +0 -296
- package/dist/node_modules/@ai-sdk/provider/dist/index.js.map +0 -1
- package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +0 -576
- package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js.map +0 -1
- package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js +0 -741
- package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js +0 -112
- package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js +0 -123
- package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js +0 -62
- package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js +0 -91
- package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js +0 -79
- package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js +0 -59
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js +0 -99
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js +0 -31
- package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js +0 -69
- package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js +0 -54
- package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js +0 -22
- package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js +0 -104
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js +0 -44
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js +0 -43
- package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js +0 -27
- package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js +0 -62
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js +0 -121
- package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js +0 -167
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js +0 -33
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js +0 -22
- package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js +0 -21
- package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js +0 -35
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js +0 -40
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js +0 -22
- package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js +0 -70
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js +0 -78
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js +0 -34
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js +0 -55
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js +0 -56
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js +0 -76
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js +0 -27
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js +0 -45
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js +0 -22
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js +0 -25
- package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js +0 -24
- package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js.map +0 -1
- package/dist/node_modules/@opentelemetry/api/build/esm/version.js +0 -20
- package/dist/node_modules/@opentelemetry/api/build/esm/version.js.map +0 -1
- package/dist/node_modules/ai/dist/index.js +0 -2870
- package/dist/node_modules/ai/dist/index.js.map +0 -1
- package/dist/node_modules/nanoid/non-secure/index.js +0 -13
- package/dist/node_modules/nanoid/non-secure/index.js.map +0 -1
- package/dist/node_modules/secure-json-parse/index.js +0 -133
- package/dist/node_modules/secure-json-parse/index.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +0 -37
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +0 -26
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +0 -17
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/index.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/index.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +0 -66
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +0 -21
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +0 -30
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +0 -53
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +0 -50
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +0 -9
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +0 -56
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +0 -30
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +0 -19
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +0 -15
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +0 -13
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +0 -37
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +0 -56
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +0 -76
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +0 -25
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +0 -65
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +0 -350
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +0 -36
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +0 -10
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +0 -84
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +0 -110
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +0 -90
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +0 -1
- package/dist/src/structured-extraction.d.ts +0 -28
- package/dist/src/structured-extraction.d.ts.map +0 -1
- package/dist/src/structured-extraction.js +0 -77
- package/dist/src/structured-extraction.js.map +0 -1
- package/dist/src/utils/ai-sdk.d.ts +0 -14
- package/dist/src/utils/ai-sdk.d.ts.map +0 -1
- package/dist/src/utils/ai-sdk.js +0 -38
- package/dist/src/utils/ai-sdk.js.map +0 -1
- package/src/structured-extraction.ts +0 -117
- package/src/utils/ai-sdk.ts +0 -47
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { ZodFirstPartyTypeKind } from 'zod';
|
|
2
|
-
import { parseAnyDef } from './parsers/any.js';
|
|
3
|
-
import { parseArrayDef } from './parsers/array.js';
|
|
4
|
-
import { parseBigintDef } from './parsers/bigint.js';
|
|
5
|
-
import { parseBooleanDef } from './parsers/boolean.js';
|
|
6
|
-
import { parseBrandedDef } from './parsers/branded.js';
|
|
7
|
-
import { parseCatchDef } from './parsers/catch.js';
|
|
8
|
-
import { parseDateDef } from './parsers/date.js';
|
|
9
|
-
import { parseDefaultDef } from './parsers/default.js';
|
|
10
|
-
import { parseEffectsDef } from './parsers/effects.js';
|
|
11
|
-
import { parseEnumDef } from './parsers/enum.js';
|
|
12
|
-
import { parseIntersectionDef } from './parsers/intersection.js';
|
|
13
|
-
import { parseLiteralDef } from './parsers/literal.js';
|
|
14
|
-
import { parseMapDef } from './parsers/map.js';
|
|
15
|
-
import { parseNativeEnumDef } from './parsers/nativeEnum.js';
|
|
16
|
-
import { parseNeverDef } from './parsers/never.js';
|
|
17
|
-
import { parseNullDef } from './parsers/null.js';
|
|
18
|
-
import { parseNullableDef } from './parsers/nullable.js';
|
|
19
|
-
import { parseNumberDef } from './parsers/number.js';
|
|
20
|
-
import { parseObjectDef } from './parsers/object.js';
|
|
21
|
-
import { parseOptionalDef } from './parsers/optional.js';
|
|
22
|
-
import { parsePipelineDef } from './parsers/pipeline.js';
|
|
23
|
-
import { parsePromiseDef } from './parsers/promise.js';
|
|
24
|
-
import { parseRecordDef } from './parsers/record.js';
|
|
25
|
-
import { parseSetDef } from './parsers/set.js';
|
|
26
|
-
import { parseStringDef } from './parsers/string.js';
|
|
27
|
-
import { parseTupleDef } from './parsers/tuple.js';
|
|
28
|
-
import { parseUndefinedDef } from './parsers/undefined.js';
|
|
29
|
-
import { parseUnionDef } from './parsers/union.js';
|
|
30
|
-
import { parseUnknownDef } from './parsers/unknown.js';
|
|
31
|
-
import { parseReadonlyDef } from './parsers/readonly.js';
|
|
32
|
-
|
|
33
|
-
const selectParser = (def, typeName, refs) => {
|
|
34
|
-
switch (typeName) {
|
|
35
|
-
case ZodFirstPartyTypeKind.ZodString:
|
|
36
|
-
return parseStringDef(def, refs);
|
|
37
|
-
case ZodFirstPartyTypeKind.ZodNumber:
|
|
38
|
-
return parseNumberDef(def, refs);
|
|
39
|
-
case ZodFirstPartyTypeKind.ZodObject:
|
|
40
|
-
return parseObjectDef(def, refs);
|
|
41
|
-
case ZodFirstPartyTypeKind.ZodBigInt:
|
|
42
|
-
return parseBigintDef(def, refs);
|
|
43
|
-
case ZodFirstPartyTypeKind.ZodBoolean:
|
|
44
|
-
return parseBooleanDef();
|
|
45
|
-
case ZodFirstPartyTypeKind.ZodDate:
|
|
46
|
-
return parseDateDef(def, refs);
|
|
47
|
-
case ZodFirstPartyTypeKind.ZodUndefined:
|
|
48
|
-
return parseUndefinedDef(refs);
|
|
49
|
-
case ZodFirstPartyTypeKind.ZodNull:
|
|
50
|
-
return parseNullDef(refs);
|
|
51
|
-
case ZodFirstPartyTypeKind.ZodArray:
|
|
52
|
-
return parseArrayDef(def, refs);
|
|
53
|
-
case ZodFirstPartyTypeKind.ZodUnion:
|
|
54
|
-
case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:
|
|
55
|
-
return parseUnionDef(def, refs);
|
|
56
|
-
case ZodFirstPartyTypeKind.ZodIntersection:
|
|
57
|
-
return parseIntersectionDef(def, refs);
|
|
58
|
-
case ZodFirstPartyTypeKind.ZodTuple:
|
|
59
|
-
return parseTupleDef(def, refs);
|
|
60
|
-
case ZodFirstPartyTypeKind.ZodRecord:
|
|
61
|
-
return parseRecordDef(def, refs);
|
|
62
|
-
case ZodFirstPartyTypeKind.ZodLiteral:
|
|
63
|
-
return parseLiteralDef(def, refs);
|
|
64
|
-
case ZodFirstPartyTypeKind.ZodEnum:
|
|
65
|
-
return parseEnumDef(def);
|
|
66
|
-
case ZodFirstPartyTypeKind.ZodNativeEnum:
|
|
67
|
-
return parseNativeEnumDef(def);
|
|
68
|
-
case ZodFirstPartyTypeKind.ZodNullable:
|
|
69
|
-
return parseNullableDef(def, refs);
|
|
70
|
-
case ZodFirstPartyTypeKind.ZodOptional:
|
|
71
|
-
return parseOptionalDef(def, refs);
|
|
72
|
-
case ZodFirstPartyTypeKind.ZodMap:
|
|
73
|
-
return parseMapDef(def, refs);
|
|
74
|
-
case ZodFirstPartyTypeKind.ZodSet:
|
|
75
|
-
return parseSetDef(def, refs);
|
|
76
|
-
case ZodFirstPartyTypeKind.ZodLazy:
|
|
77
|
-
return () => def.getter()._def;
|
|
78
|
-
case ZodFirstPartyTypeKind.ZodPromise:
|
|
79
|
-
return parsePromiseDef(def, refs);
|
|
80
|
-
case ZodFirstPartyTypeKind.ZodNaN:
|
|
81
|
-
case ZodFirstPartyTypeKind.ZodNever:
|
|
82
|
-
return parseNeverDef(refs);
|
|
83
|
-
case ZodFirstPartyTypeKind.ZodEffects:
|
|
84
|
-
return parseEffectsDef(def, refs);
|
|
85
|
-
case ZodFirstPartyTypeKind.ZodAny:
|
|
86
|
-
return parseAnyDef(refs);
|
|
87
|
-
case ZodFirstPartyTypeKind.ZodUnknown:
|
|
88
|
-
return parseUnknownDef(refs);
|
|
89
|
-
case ZodFirstPartyTypeKind.ZodDefault:
|
|
90
|
-
return parseDefaultDef(def, refs);
|
|
91
|
-
case ZodFirstPartyTypeKind.ZodBranded:
|
|
92
|
-
return parseBrandedDef(def, refs);
|
|
93
|
-
case ZodFirstPartyTypeKind.ZodReadonly:
|
|
94
|
-
return parseReadonlyDef(def, refs);
|
|
95
|
-
case ZodFirstPartyTypeKind.ZodCatch:
|
|
96
|
-
return parseCatchDef(def, refs);
|
|
97
|
-
case ZodFirstPartyTypeKind.ZodPipeline:
|
|
98
|
-
return parsePipelineDef(def, refs);
|
|
99
|
-
case ZodFirstPartyTypeKind.ZodFunction:
|
|
100
|
-
case ZodFirstPartyTypeKind.ZodVoid:
|
|
101
|
-
case ZodFirstPartyTypeKind.ZodSymbol:
|
|
102
|
-
return undefined;
|
|
103
|
-
default:
|
|
104
|
-
/* c8 ignore next */
|
|
105
|
-
return ((_) => undefined)();
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
export { selectParser };
|
|
110
|
-
//# sourceMappingURL=selectParser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selectParser.js","sources":["../../../../../node_modules/zod-to-json-schema/dist/esm/selectParser.js"],"sourcesContent":["import { ZodFirstPartyTypeKind } from \"zod\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef(refs);\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef(refs);\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef(refs);\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef(refs);\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n /* c8 ignore next */\n return ((_) => undefined)(typeName);\n }\n};\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { parseDef } from './parseDef.js';
|
|
2
|
-
import { getRefs } from './Refs.js';
|
|
3
|
-
import { parseAnyDef } from './parsers/any.js';
|
|
4
|
-
|
|
5
|
-
const zodToJsonSchema = (schema, options) => {
|
|
6
|
-
const refs = getRefs(options);
|
|
7
|
-
let definitions = typeof options === "object" && options.definitions
|
|
8
|
-
? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({
|
|
9
|
-
...acc,
|
|
10
|
-
[name]: parseDef(schema._def, {
|
|
11
|
-
...refs,
|
|
12
|
-
currentPath: [...refs.basePath, refs.definitionPath, name],
|
|
13
|
-
}, true) ?? parseAnyDef(refs),
|
|
14
|
-
}), {})
|
|
15
|
-
: undefined;
|
|
16
|
-
const name = typeof options === "string"
|
|
17
|
-
? options
|
|
18
|
-
: options?.nameStrategy === "title"
|
|
19
|
-
? undefined
|
|
20
|
-
: options?.name;
|
|
21
|
-
const main = parseDef(schema._def, name === undefined
|
|
22
|
-
? refs
|
|
23
|
-
: {
|
|
24
|
-
...refs,
|
|
25
|
-
currentPath: [...refs.basePath, refs.definitionPath, name],
|
|
26
|
-
}, false) ?? parseAnyDef(refs);
|
|
27
|
-
const title = typeof options === "object" &&
|
|
28
|
-
options.name !== undefined &&
|
|
29
|
-
options.nameStrategy === "title"
|
|
30
|
-
? options.name
|
|
31
|
-
: undefined;
|
|
32
|
-
if (title !== undefined) {
|
|
33
|
-
main.title = title;
|
|
34
|
-
}
|
|
35
|
-
if (refs.flags.hasReferencedOpenAiAnyType) {
|
|
36
|
-
if (!definitions) {
|
|
37
|
-
definitions = {};
|
|
38
|
-
}
|
|
39
|
-
if (!definitions[refs.openAiAnyTypeName]) {
|
|
40
|
-
definitions[refs.openAiAnyTypeName] = {
|
|
41
|
-
// Skipping "object" as no properties can be defined and additionalProperties must be "false"
|
|
42
|
-
type: ["string", "number", "integer", "boolean", "array", "null"],
|
|
43
|
-
items: {
|
|
44
|
-
$ref: refs.$refStrategy === "relative"
|
|
45
|
-
? "1"
|
|
46
|
-
: [
|
|
47
|
-
...refs.basePath,
|
|
48
|
-
refs.definitionPath,
|
|
49
|
-
refs.openAiAnyTypeName,
|
|
50
|
-
].join("/"),
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
const combined = name === undefined
|
|
56
|
-
? definitions
|
|
57
|
-
? {
|
|
58
|
-
...main,
|
|
59
|
-
[refs.definitionPath]: definitions,
|
|
60
|
-
}
|
|
61
|
-
: main
|
|
62
|
-
: {
|
|
63
|
-
$ref: [
|
|
64
|
-
...(refs.$refStrategy === "relative" ? [] : refs.basePath),
|
|
65
|
-
refs.definitionPath,
|
|
66
|
-
name,
|
|
67
|
-
].join("/"),
|
|
68
|
-
[refs.definitionPath]: {
|
|
69
|
-
...definitions,
|
|
70
|
-
[name]: main,
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
if (refs.target === "jsonSchema7") {
|
|
74
|
-
combined.$schema = "http://json-schema.org/draft-07/schema#";
|
|
75
|
-
}
|
|
76
|
-
else if (refs.target === "jsonSchema2019-09" || refs.target === "openAi") {
|
|
77
|
-
combined.$schema = "https://json-schema.org/draft/2019-09/schema#";
|
|
78
|
-
}
|
|
79
|
-
if (refs.target === "openAi" &&
|
|
80
|
-
("anyOf" in combined ||
|
|
81
|
-
"oneOf" in combined ||
|
|
82
|
-
"allOf" in combined ||
|
|
83
|
-
("type" in combined && Array.isArray(combined.type)))) {
|
|
84
|
-
console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.");
|
|
85
|
-
}
|
|
86
|
-
return combined;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export { zodToJsonSchema };
|
|
90
|
-
//# sourceMappingURL=zodToJsonSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zodToJsonSchema.js","sources":["../../../../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js"],"sourcesContent":["import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? parseAnyDef(refs),\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? parseAnyDef(refs);\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n if (refs.flags.hasReferencedOpenAiAnyType) {\n if (!definitions) {\n definitions = {};\n }\n if (!definitions[refs.openAiAnyTypeName]) {\n definitions[refs.openAiAnyTypeName] = {\n // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n items: {\n $ref: refs.$refStrategy === \"relative\"\n ? \"1\"\n : [\n ...refs.basePath,\n refs.definitionPath,\n refs.openAiAnyTypeName,\n ].join(\"/\"),\n },\n };\n }\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Logger } from './utils/logger.js';
|
|
2
|
-
export interface ExtractedQuestion {
|
|
3
|
-
id: string;
|
|
4
|
-
question: string;
|
|
5
|
-
options: string[];
|
|
6
|
-
}
|
|
7
|
-
export interface ExtractedQuestionWithAnswer extends ExtractedQuestion {
|
|
8
|
-
recommendedAnswer: string;
|
|
9
|
-
justification: string;
|
|
10
|
-
}
|
|
11
|
-
export interface StructuredExtractor {
|
|
12
|
-
extractQuestions(researchContent: string): Promise<ExtractedQuestion[]>;
|
|
13
|
-
extractQuestionsWithAnswers(researchContent: string): Promise<ExtractedQuestionWithAnswer[]>;
|
|
14
|
-
}
|
|
15
|
-
export type StructuredExtractorConfig = {
|
|
16
|
-
apiKey: string;
|
|
17
|
-
gatewayUrl: string;
|
|
18
|
-
modelName?: string;
|
|
19
|
-
logger?: Logger;
|
|
20
|
-
};
|
|
21
|
-
export declare class AISDKExtractor implements StructuredExtractor {
|
|
22
|
-
private logger;
|
|
23
|
-
private model;
|
|
24
|
-
constructor(config: StructuredExtractorConfig);
|
|
25
|
-
extractQuestions(researchContent: string): Promise<ExtractedQuestion[]>;
|
|
26
|
-
extractQuestionsWithAnswers(researchContent: string): Promise<ExtractedQuestionWithAnswer[]>;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=structured-extraction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structured-extraction.d.ts","sourceRoot":"","sources":["../../src/structured-extraction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAwBD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxE,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC;CAC9F;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAA;AAED,qBAAa,cAAe,YAAW,mBAAmB;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAM;gBAEP,MAAM,EAAE,yBAAyB;IAmBvC,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqBvE,2BAA2B,CAC/B,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,EAAE,CAAC;CAoB1C"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { generateObject } from '../node_modules/ai/dist/index.js';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { Logger } from './utils/logger.js';
|
|
4
|
-
import { getAnthropicModel } from './utils/ai-sdk.js';
|
|
5
|
-
|
|
6
|
-
const questionsOnlySchema = z.object({
|
|
7
|
-
questions: z.array(z.object({
|
|
8
|
-
id: z.string(),
|
|
9
|
-
question: z.string(),
|
|
10
|
-
options: z.array(z.string()),
|
|
11
|
-
})),
|
|
12
|
-
});
|
|
13
|
-
const questionsWithAnswersSchema = z.object({
|
|
14
|
-
questions: z.array(z.object({
|
|
15
|
-
id: z.string(),
|
|
16
|
-
question: z.string(),
|
|
17
|
-
options: z.array(z.string()),
|
|
18
|
-
recommendedAnswer: z.string().describe('The letter of the recommended option (e.g., "a", "b", "c")'),
|
|
19
|
-
justification: z.string().describe('Brief explanation for the recommended answer'),
|
|
20
|
-
})),
|
|
21
|
-
});
|
|
22
|
-
class AISDKExtractor {
|
|
23
|
-
logger;
|
|
24
|
-
model;
|
|
25
|
-
constructor(config) {
|
|
26
|
-
this.logger = config.logger || new Logger({ debug: false, prefix: '[AISDKExtractor]' });
|
|
27
|
-
if (!config.apiKey) {
|
|
28
|
-
throw new Error('Missing API key for structured extraction. Ensure the LLM gateway is configured.');
|
|
29
|
-
}
|
|
30
|
-
this.model = getAnthropicModel({
|
|
31
|
-
apiKey: config.apiKey,
|
|
32
|
-
gatewayUrl: config.gatewayUrl,
|
|
33
|
-
modelName: config.modelName || 'claude-haiku-4-5',
|
|
34
|
-
});
|
|
35
|
-
this.logger.debug('Using PostHog LLM gateway for structured extraction', {
|
|
36
|
-
modelName: config.modelName || 'claude-haiku-4-5',
|
|
37
|
-
gatewayUrl: config.gatewayUrl
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
async extractQuestions(researchContent) {
|
|
41
|
-
this.logger.debug('Extracting questions from research content', {
|
|
42
|
-
contentLength: researchContent.length,
|
|
43
|
-
});
|
|
44
|
-
const { object } = await generateObject({
|
|
45
|
-
model: this.model,
|
|
46
|
-
schema: questionsOnlySchema,
|
|
47
|
-
schemaName: 'ResearchQuestions',
|
|
48
|
-
schemaDescription: 'Research questions extracted from markdown content',
|
|
49
|
-
system: 'Extract the research questions from the provided markdown. Return a JSON object matching the schema.',
|
|
50
|
-
prompt: researchContent,
|
|
51
|
-
});
|
|
52
|
-
this.logger.info('Successfully extracted questions', {
|
|
53
|
-
questionCount: object.questions.length,
|
|
54
|
-
});
|
|
55
|
-
return object.questions;
|
|
56
|
-
}
|
|
57
|
-
async extractQuestionsWithAnswers(researchContent) {
|
|
58
|
-
this.logger.debug('Extracting questions with recommended answers', {
|
|
59
|
-
contentLength: researchContent.length,
|
|
60
|
-
});
|
|
61
|
-
const { object } = await generateObject({
|
|
62
|
-
model: this.model,
|
|
63
|
-
schema: questionsWithAnswersSchema,
|
|
64
|
-
schemaName: 'ResearchQuestionsWithAnswers',
|
|
65
|
-
schemaDescription: 'Research questions with recommended answers extracted from markdown',
|
|
66
|
-
system: 'Extract the research questions from the markdown and provide recommended answers based on the analysis. For each question, include a recommendedAnswer (the letter: a, b, c, etc.) and a brief justification. Return a JSON object matching the schema.',
|
|
67
|
-
prompt: researchContent,
|
|
68
|
-
});
|
|
69
|
-
this.logger.info('Successfully extracted questions with answers', {
|
|
70
|
-
questionCount: object.questions.length,
|
|
71
|
-
});
|
|
72
|
-
return object.questions;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export { AISDKExtractor };
|
|
77
|
-
//# sourceMappingURL=structured-extraction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structured-extraction.js","sources":["../../src/structured-extraction.ts"],"sourcesContent":["import { generateObject } from 'ai';\nimport { z } from 'zod';\nimport { Logger } from './utils/logger.js';\nimport { getAnthropicModel } from './utils/ai-sdk.js';\n\nexport interface ExtractedQuestion {\n id: string;\n question: string;\n options: string[];\n}\n\nexport interface ExtractedQuestionWithAnswer extends ExtractedQuestion {\n recommendedAnswer: string;\n justification: string;\n}\n\nconst questionsOnlySchema = z.object({\n questions: z.array(\n z.object({\n id: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n })\n ),\n});\n\nconst questionsWithAnswersSchema = z.object({\n questions: z.array(\n z.object({\n id: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n recommendedAnswer: z.string().describe('The letter of the recommended option (e.g., \"a\", \"b\", \"c\")'),\n justification: z.string().describe('Brief explanation for the recommended answer'),\n })\n ),\n});\n\nexport interface StructuredExtractor {\n extractQuestions(researchContent: string): Promise<ExtractedQuestion[]>;\n extractQuestionsWithAnswers(researchContent: string): Promise<ExtractedQuestionWithAnswer[]>;\n}\n\nexport type StructuredExtractorConfig = {\n apiKey: string;\n gatewayUrl: string;\n modelName?: string;\n logger?: Logger;\n}\n\nexport class AISDKExtractor implements StructuredExtractor {\n private logger: Logger;\n private model: any;\n\n constructor(config: StructuredExtractorConfig) {\n this.logger = config.logger || new Logger({ debug: false, prefix: '[AISDKExtractor]' });\n\n if (!config.apiKey) {\n throw new Error('Missing API key for structured extraction. Ensure the LLM gateway is configured.');\n }\n\n this.model = getAnthropicModel({\n apiKey: config.apiKey,\n gatewayUrl: config.gatewayUrl,\n modelName: config.modelName || 'claude-haiku-4-5',\n });\n\n this.logger.debug('Using PostHog LLM gateway for structured extraction', {\n modelName: config.modelName || 'claude-haiku-4-5',\n gatewayUrl: config.gatewayUrl\n });\n }\n\n async extractQuestions(researchContent: string): Promise<ExtractedQuestion[]> {\n this.logger.debug('Extracting questions from research content', {\n contentLength: researchContent.length,\n });\n\n const { object } = await generateObject({\n model: this.model,\n schema: questionsOnlySchema,\n schemaName: 'ResearchQuestions',\n schemaDescription: 'Research questions extracted from markdown content',\n system: 'Extract the research questions from the provided markdown. Return a JSON object matching the schema.',\n prompt: researchContent,\n });\n\n this.logger.info('Successfully extracted questions', {\n questionCount: object.questions.length,\n });\n\n return object.questions;\n }\n\n async extractQuestionsWithAnswers(\n researchContent: string,\n ): Promise<ExtractedQuestionWithAnswer[]> {\n this.logger.debug('Extracting questions with recommended answers', {\n contentLength: researchContent.length,\n });\n\n const { object } = await generateObject({\n model: this.model,\n schema: questionsWithAnswersSchema,\n schemaName: 'ResearchQuestionsWithAnswers',\n schemaDescription: 'Research questions with recommended answers extracted from markdown',\n system: 'Extract the research questions from the markdown and provide recommended answers based on the analysis. For each question, include a recommendedAnswer (the letter: a, b, c, etc.) and a brief justification. Return a JSON object matching the schema.',\n prompt: researchContent,\n });\n\n this.logger.info('Successfully extracted questions with answers', {\n questionCount: object.questions.length,\n });\n\n return object.questions;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface PostHogGatewayConfig {
|
|
2
|
-
apiKey: string;
|
|
3
|
-
gatewayUrl: string;
|
|
4
|
-
modelName?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Creates an Anthropic model configured for PostHog LLM gateway.
|
|
8
|
-
*
|
|
9
|
-
* Handles two key differences between AI SDK and PostHog gateway:
|
|
10
|
-
* 1. Appends /v1 to baseURL (gateway expects /v1/messages, SDK appends /messages)
|
|
11
|
-
* 2. Converts x-api-key header to Authorization Bearer token
|
|
12
|
-
*/
|
|
13
|
-
export declare function getAnthropicModel(config: PostHogGatewayConfig): import("ai").LanguageModelV1;
|
|
14
|
-
//# sourceMappingURL=ai-sdk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../../src/utils/ai-sdk.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,gCA+B7D"}
|
package/dist/src/utils/ai-sdk.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createAnthropic } from '../../node_modules/@ai-sdk/anthropic/dist/index.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Creates an Anthropic model configured for PostHog LLM gateway.
|
|
5
|
-
*
|
|
6
|
-
* Handles two key differences between AI SDK and PostHog gateway:
|
|
7
|
-
* 1. Appends /v1 to baseURL (gateway expects /v1/messages, SDK appends /messages)
|
|
8
|
-
* 2. Converts x-api-key header to Authorization Bearer token
|
|
9
|
-
*/
|
|
10
|
-
function getAnthropicModel(config) {
|
|
11
|
-
const modelName = config.modelName || 'claude-haiku-4-5';
|
|
12
|
-
// PostHog gateway expects /v1/messages, but AI SDK appends /messages
|
|
13
|
-
// So we need to append /v1 to the baseURL
|
|
14
|
-
const baseURL = config.gatewayUrl ? `${config.gatewayUrl}/v1` : undefined;
|
|
15
|
-
// Custom fetch to convert x-api-key header to Authorization Bearer
|
|
16
|
-
// PostHog gateway expects Bearer token, but Anthropic SDK sends x-api-key
|
|
17
|
-
const customFetch = async (url, init) => {
|
|
18
|
-
const headers = new Headers(init?.headers);
|
|
19
|
-
if (headers.has('x-api-key')) {
|
|
20
|
-
headers.delete('x-api-key');
|
|
21
|
-
headers.set('Authorization', `Bearer ${config.apiKey}`);
|
|
22
|
-
}
|
|
23
|
-
return fetch(url, {
|
|
24
|
-
...init,
|
|
25
|
-
headers,
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
const anthropic = createAnthropic({
|
|
29
|
-
apiKey: config.apiKey,
|
|
30
|
-
baseURL,
|
|
31
|
-
//@ts-ignore
|
|
32
|
-
fetch: customFetch,
|
|
33
|
-
});
|
|
34
|
-
return anthropic(modelName);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export { getAnthropicModel };
|
|
38
|
-
//# sourceMappingURL=ai-sdk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.js","sources":["../../../src/utils/ai-sdk.ts"],"sourcesContent":["import { createAnthropic } from '@ai-sdk/anthropic';\n\nexport interface PostHogGatewayConfig {\n apiKey: string;\n gatewayUrl: string;\n modelName?: string;\n}\n\n/**\n * Creates an Anthropic model configured for PostHog LLM gateway.\n * \n * Handles two key differences between AI SDK and PostHog gateway:\n * 1. Appends /v1 to baseURL (gateway expects /v1/messages, SDK appends /messages)\n * 2. Converts x-api-key header to Authorization Bearer token\n */\nexport function getAnthropicModel(config: PostHogGatewayConfig) {\n const modelName = config.modelName || 'claude-haiku-4-5';\n \n // PostHog gateway expects /v1/messages, but AI SDK appends /messages\n // So we need to append /v1 to the baseURL\n const baseURL = config.gatewayUrl ? `${config.gatewayUrl}/v1` : undefined;\n\n // Custom fetch to convert x-api-key header to Authorization Bearer\n // PostHog gateway expects Bearer token, but Anthropic SDK sends x-api-key\n const customFetch = async (url: RequestInfo, init?: RequestInit): Promise<Response> => {\n const headers = new Headers(init?.headers);\n\n if (headers.has('x-api-key')) {\n headers.delete('x-api-key');\n headers.set('Authorization', `Bearer ${config.apiKey}`);\n }\n\n return fetch(url, {\n ...init,\n headers,\n });\n };\n\n const anthropic = createAnthropic({\n apiKey: config.apiKey,\n baseURL,\n //@ts-ignore\n fetch: customFetch,\n });\n\n return anthropic(modelName);\n}\n"],"names":[],"mappings":";;AAQA;;;;;;AAMG;AACG,SAAU,iBAAiB,CAAC,MAA4B,EAAA;AAC5D,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB;;;AAIxD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,CAAA,EAAG,MAAM,CAAC,UAAU,CAAA,GAAA,CAAK,GAAG,SAAS;;;IAIzE,MAAM,WAAW,GAAG,OAAO,GAAgB,EAAE,IAAkB,KAAuB;QACpF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AAE1C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;QACzD;QAEA,OAAO,KAAK,CAAC,GAAG,EAAE;AAChB,YAAA,GAAG,IAAI;YACP,OAAO;AACR,SAAA,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO;;AAEP,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA,CAAC;AAEF,IAAA,OAAO,SAAS,CAAC,SAAS,CAAC;AAC7B;;;;"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { generateObject } from 'ai';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { Logger } from './utils/logger.js';
|
|
4
|
-
import { getAnthropicModel } from './utils/ai-sdk.js';
|
|
5
|
-
|
|
6
|
-
export interface ExtractedQuestion {
|
|
7
|
-
id: string;
|
|
8
|
-
question: string;
|
|
9
|
-
options: string[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface ExtractedQuestionWithAnswer extends ExtractedQuestion {
|
|
13
|
-
recommendedAnswer: string;
|
|
14
|
-
justification: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const questionsOnlySchema = z.object({
|
|
18
|
-
questions: z.array(
|
|
19
|
-
z.object({
|
|
20
|
-
id: z.string(),
|
|
21
|
-
question: z.string(),
|
|
22
|
-
options: z.array(z.string()),
|
|
23
|
-
})
|
|
24
|
-
),
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const questionsWithAnswersSchema = z.object({
|
|
28
|
-
questions: z.array(
|
|
29
|
-
z.object({
|
|
30
|
-
id: z.string(),
|
|
31
|
-
question: z.string(),
|
|
32
|
-
options: z.array(z.string()),
|
|
33
|
-
recommendedAnswer: z.string().describe('The letter of the recommended option (e.g., "a", "b", "c")'),
|
|
34
|
-
justification: z.string().describe('Brief explanation for the recommended answer'),
|
|
35
|
-
})
|
|
36
|
-
),
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
export interface StructuredExtractor {
|
|
40
|
-
extractQuestions(researchContent: string): Promise<ExtractedQuestion[]>;
|
|
41
|
-
extractQuestionsWithAnswers(researchContent: string): Promise<ExtractedQuestionWithAnswer[]>;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export type StructuredExtractorConfig = {
|
|
45
|
-
apiKey: string;
|
|
46
|
-
gatewayUrl: string;
|
|
47
|
-
modelName?: string;
|
|
48
|
-
logger?: Logger;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export class AISDKExtractor implements StructuredExtractor {
|
|
52
|
-
private logger: Logger;
|
|
53
|
-
private model: any;
|
|
54
|
-
|
|
55
|
-
constructor(config: StructuredExtractorConfig) {
|
|
56
|
-
this.logger = config.logger || new Logger({ debug: false, prefix: '[AISDKExtractor]' });
|
|
57
|
-
|
|
58
|
-
if (!config.apiKey) {
|
|
59
|
-
throw new Error('Missing API key for structured extraction. Ensure the LLM gateway is configured.');
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
this.model = getAnthropicModel({
|
|
63
|
-
apiKey: config.apiKey,
|
|
64
|
-
gatewayUrl: config.gatewayUrl,
|
|
65
|
-
modelName: config.modelName || 'claude-haiku-4-5',
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
this.logger.debug('Using PostHog LLM gateway for structured extraction', {
|
|
69
|
-
modelName: config.modelName || 'claude-haiku-4-5',
|
|
70
|
-
gatewayUrl: config.gatewayUrl
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
async extractQuestions(researchContent: string): Promise<ExtractedQuestion[]> {
|
|
75
|
-
this.logger.debug('Extracting questions from research content', {
|
|
76
|
-
contentLength: researchContent.length,
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
const { object } = await generateObject({
|
|
80
|
-
model: this.model,
|
|
81
|
-
schema: questionsOnlySchema,
|
|
82
|
-
schemaName: 'ResearchQuestions',
|
|
83
|
-
schemaDescription: 'Research questions extracted from markdown content',
|
|
84
|
-
system: 'Extract the research questions from the provided markdown. Return a JSON object matching the schema.',
|
|
85
|
-
prompt: researchContent,
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
this.logger.info('Successfully extracted questions', {
|
|
89
|
-
questionCount: object.questions.length,
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
return object.questions;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async extractQuestionsWithAnswers(
|
|
96
|
-
researchContent: string,
|
|
97
|
-
): Promise<ExtractedQuestionWithAnswer[]> {
|
|
98
|
-
this.logger.debug('Extracting questions with recommended answers', {
|
|
99
|
-
contentLength: researchContent.length,
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
const { object } = await generateObject({
|
|
103
|
-
model: this.model,
|
|
104
|
-
schema: questionsWithAnswersSchema,
|
|
105
|
-
schemaName: 'ResearchQuestionsWithAnswers',
|
|
106
|
-
schemaDescription: 'Research questions with recommended answers extracted from markdown',
|
|
107
|
-
system: 'Extract the research questions from the markdown and provide recommended answers based on the analysis. For each question, include a recommendedAnswer (the letter: a, b, c, etc.) and a brief justification. Return a JSON object matching the schema.',
|
|
108
|
-
prompt: researchContent,
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
this.logger.info('Successfully extracted questions with answers', {
|
|
112
|
-
questionCount: object.questions.length,
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
return object.questions;
|
|
116
|
-
}
|
|
117
|
-
}
|
package/src/utils/ai-sdk.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
2
|
-
|
|
3
|
-
export interface PostHogGatewayConfig {
|
|
4
|
-
apiKey: string;
|
|
5
|
-
gatewayUrl: string;
|
|
6
|
-
modelName?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Creates an Anthropic model configured for PostHog LLM gateway.
|
|
11
|
-
*
|
|
12
|
-
* Handles two key differences between AI SDK and PostHog gateway:
|
|
13
|
-
* 1. Appends /v1 to baseURL (gateway expects /v1/messages, SDK appends /messages)
|
|
14
|
-
* 2. Converts x-api-key header to Authorization Bearer token
|
|
15
|
-
*/
|
|
16
|
-
export function getAnthropicModel(config: PostHogGatewayConfig) {
|
|
17
|
-
const modelName = config.modelName || 'claude-haiku-4-5';
|
|
18
|
-
|
|
19
|
-
// PostHog gateway expects /v1/messages, but AI SDK appends /messages
|
|
20
|
-
// So we need to append /v1 to the baseURL
|
|
21
|
-
const baseURL = config.gatewayUrl ? `${config.gatewayUrl}/v1` : undefined;
|
|
22
|
-
|
|
23
|
-
// Custom fetch to convert x-api-key header to Authorization Bearer
|
|
24
|
-
// PostHog gateway expects Bearer token, but Anthropic SDK sends x-api-key
|
|
25
|
-
const customFetch = async (url: RequestInfo, init?: RequestInit): Promise<Response> => {
|
|
26
|
-
const headers = new Headers(init?.headers);
|
|
27
|
-
|
|
28
|
-
if (headers.has('x-api-key')) {
|
|
29
|
-
headers.delete('x-api-key');
|
|
30
|
-
headers.set('Authorization', `Bearer ${config.apiKey}`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return fetch(url, {
|
|
34
|
-
...init,
|
|
35
|
-
headers,
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const anthropic = createAnthropic({
|
|
40
|
-
apiKey: config.apiKey,
|
|
41
|
-
baseURL,
|
|
42
|
-
//@ts-ignore
|
|
43
|
-
fetch: customFetch,
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
return anthropic(modelName);
|
|
47
|
-
}
|