@boboddy/sdk 0.1.1-alpha → 0.1.3-alpha

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.
@@ -0,0 +1,42 @@
1
+ import type { ZodObject, ZodRawShape } from "zod";
2
+ type FeatureSignalSpec = {
3
+ key: string;
4
+ sourcePath: string;
5
+ type: "string" | "number" | "boolean" | "object" | "array";
6
+ required?: boolean;
7
+ availableWhenResultStatusIn?: string[] | null;
8
+ };
9
+ export type StepFeature<TResultExtension extends Record<string, unknown> = Record<string, unknown>, TSignalKeys extends string = string> = {
10
+ readonly _resultExtension: ZodObject<ZodRawShape>;
11
+ readonly _promptAddition: string;
12
+ readonly _signals: FeatureSignalSpec[];
13
+ readonly __resultExtension?: TResultExtension;
14
+ readonly __signalKeys?: TSignalKeys;
15
+ };
16
+ export type AnyStepFeature = StepFeature<Record<string, unknown>, string>;
17
+ type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
18
+ export type FeatureResultExtensions<TFeatures extends readonly AnyStepFeature[]> = [
19
+ TFeatures[number]
20
+ ] extends [never] ? Record<never, never> : UnionToIntersection<TFeatures[number] extends StepFeature<infer R, string> ? R : never>;
21
+ export type FeatureSignalKeys<TFeatures extends readonly AnyStepFeature[]> = TFeatures[number] extends StepFeature<Record<string, unknown>, infer K> ? K : never;
22
+ export type FeedbackRequestItem = {
23
+ question: string;
24
+ category: string;
25
+ suggestedKey?: string;
26
+ };
27
+ declare const FEEDBACK_REQUEST_SIGNAL_KEY: "$boboddy_feedback_request_v1";
28
+ type FeedbackRequestsFeature = StepFeature<{
29
+ feedbackRequests?: FeedbackRequestItem[];
30
+ }, typeof FEEDBACK_REQUEST_SIGNAL_KEY>;
31
+ export declare const Features: {
32
+ readonly feedbackRequests: (() => FeedbackRequestsFeature) & {
33
+ signal: {
34
+ key: "$boboddy_feedback_request_v1";
35
+ find(signals: Array<{
36
+ key: string;
37
+ valueJson: unknown;
38
+ }>): FeedbackRequestItem[] | undefined;
39
+ };
40
+ };
41
+ };
42
+ export {};
package/dist/index.js CHANGED
@@ -13301,6 +13301,20 @@ function deriveSignalType(schema, path) {
13301
13301
  }
13302
13302
  }
13303
13303
  function defineStep(config2) {
13304
+ const features = config2.features ?? [];
13305
+ let effectiveResult = config2.result;
13306
+ for (const feature of features) {
13307
+ effectiveResult = effectiveResult ? effectiveResult.extend(feature._resultExtension.shape) : feature._resultExtension;
13308
+ }
13309
+ let effectivePrompt = config2.prompt ?? null;
13310
+ for (const feature of features) {
13311
+ if (feature._promptAddition) {
13312
+ effectivePrompt = effectivePrompt ? `${effectivePrompt}
13313
+
13314
+ ${feature._promptAddition}` : feature._promptAddition;
13315
+ }
13316
+ }
13317
+ const featureSignals = features.flatMap((f) => f._signals);
13304
13318
  const spec = {
13305
13319
  key: config2.key,
13306
13320
  name: config2.name,
@@ -13308,16 +13322,25 @@ function defineStep(config2) {
13308
13322
  version: config2.version ?? 1,
13309
13323
  kind: "user_defined",
13310
13324
  status: config2.status ?? "active",
13311
- prompt: config2.prompt ?? null,
13325
+ prompt: effectivePrompt,
13312
13326
  inputSchemaJson: config2.input ? toJSONSchema(config2.input) : null,
13313
- resultSchemaJson: config2.result ? toJSONSchema(config2.result) : null,
13314
- signalExtractorDefinitions: (config2.signals ?? []).map((s) => ({
13315
- key: s.key ?? s.sourcePath,
13316
- sourcePath: s.sourcePath,
13317
- type: s.type ?? deriveSignalType(config2.result, s.sourcePath),
13318
- required: s.required ?? true,
13319
- availableWhenResultStatusIn: s.availableWhenResultStatusIn ?? null
13320
- })),
13327
+ resultSchemaJson: effectiveResult ? toJSONSchema(effectiveResult) : null,
13328
+ signalExtractorDefinitions: [
13329
+ ...(config2.signals ?? []).map((s) => ({
13330
+ key: s.key ?? s.sourcePath,
13331
+ sourcePath: s.sourcePath,
13332
+ type: s.type ?? deriveSignalType(config2.result, s.sourcePath),
13333
+ required: s.required ?? true,
13334
+ availableWhenResultStatusIn: s.availableWhenResultStatusIn ?? null
13335
+ })),
13336
+ ...featureSignals.map((s) => ({
13337
+ key: s.key,
13338
+ sourcePath: s.sourcePath,
13339
+ type: s.type,
13340
+ required: s.required ?? true,
13341
+ availableWhenResultStatusIn: s.availableWhenResultStatusIn ?? null
13342
+ }))
13343
+ ],
13321
13344
  computedSignalDefinitions: (config2.computedSignals ?? []).map((cs) => ({
13322
13345
  key: cs.key,
13323
13346
  type: cs.type,
@@ -13366,166 +13389,6 @@ var buildStepDefinitionsClient = (stepDefinitions) => {
13366
13389
  }
13367
13390
  };
13368
13391
  };
13369
- // src/definitions/advancement-policies/define-advancement-policy.ts
13370
- function signal(signal2, operator, value) {
13371
- return { _tag: "signal", signal: signal2, operator, value };
13372
- }
13373
- function all(conditions, outcome) {
13374
- if (outcome === undefined) {
13375
- return { _tag: "all", conditions };
13376
- }
13377
- return { _tag: "rule", mode: "all", conditions, outcome };
13378
- }
13379
- function any(conditions, outcome) {
13380
- if (outcome === undefined) {
13381
- return { _tag: "any", conditions };
13382
- }
13383
- return { _tag: "rule", mode: "any", conditions, outcome };
13384
- }
13385
- function when(signal2, operator, value, outcome) {
13386
- return {
13387
- _tag: "rule",
13388
- mode: "all",
13389
- conditions: [{ _tag: "signal", signal: signal2, operator, value }],
13390
- outcome
13391
- };
13392
- }
13393
- var Rule = { signal, all, any, when };
13394
- function resolveOutcome(outcome) {
13395
- if (typeof outcome === "string") {
13396
- return { type: outcome, params: null };
13397
- }
13398
- return { type: outcome.outcome, params: outcome.outcomeJson ?? null };
13399
- }
13400
- function serializeCondition(condition) {
13401
- if (condition._tag === "signal") {
13402
- return {
13403
- fact: condition.signal,
13404
- operator: condition.operator,
13405
- value: condition.value
13406
- };
13407
- }
13408
- if (condition._tag === "all") {
13409
- return { all: condition.conditions.map(serializeCondition) };
13410
- }
13411
- return { any: condition.conditions.map(serializeCondition) };
13412
- }
13413
- function serializeRule(rule) {
13414
- const resolved = resolveOutcome(rule.outcome);
13415
- return {
13416
- conditions: { [rule.mode]: rule.conditions.map(serializeCondition) },
13417
- event: {
13418
- type: resolved.type,
13419
- ...resolved.params ? { params: resolved.params } : {}
13420
- }
13421
- };
13422
- }
13423
- function serializeAdvancementPolicy(policy) {
13424
- if (!policy) {
13425
- return {
13426
- rulesJson: { rules: [] },
13427
- defaultEventType: "continue",
13428
- defaultEventParamsJson: null,
13429
- allowedEventTypes: ["continue"]
13430
- };
13431
- }
13432
- const defaultResolved = resolveOutcome(policy.defaultOutcome);
13433
- const outcomeSet = new Set([defaultResolved.type]);
13434
- const serializedRules = (policy.rules ?? []).map((rule) => {
13435
- outcomeSet.add(resolveOutcome(rule.outcome).type);
13436
- return serializeRule(rule);
13437
- });
13438
- return {
13439
- rulesJson: { rules: serializedRules },
13440
- defaultEventType: defaultResolved.type,
13441
- defaultEventParamsJson: defaultResolved.params,
13442
- allowedEventTypes: [...outcomeSet]
13443
- };
13444
- }
13445
-
13446
- // src/definitions/pipelines/define-pipeline.ts
13447
- function fromPipelineInput(_schema, path) {
13448
- return { source: "pipeline_input", path };
13449
- }
13450
- function fromSignal(step, signalKey) {
13451
- return { source: "step_signal", step, signalKey };
13452
- }
13453
- function stepOutput(step) {
13454
- return { source: "step_output", step };
13455
- }
13456
- function serializeBinding(binding) {
13457
- if (binding.source === "pipeline_input") {
13458
- return { source: "pipeline_input", path: binding.path };
13459
- }
13460
- if (binding.source === "step_signal") {
13461
- return {
13462
- source: "step_signal",
13463
- stepKey: binding.step.key,
13464
- signalKey: binding.signalKey
13465
- };
13466
- }
13467
- return { source: "step_output", stepKey: binding.step.key };
13468
- }
13469
- function definePipeline(config2) {
13470
- const steps = config2.steps;
13471
- return {
13472
- key: config2.key,
13473
- name: config2.name,
13474
- description: config2.description ?? null,
13475
- version: config2.version ?? 1,
13476
- status: config2.status ?? "active",
13477
- steps: steps.map((stepConfig, index) => ({
13478
- stepKey: stepConfig.step.key,
13479
- stepName: stepConfig.step.name,
13480
- stepDescription: stepConfig.step.description,
13481
- position: index + 1,
13482
- inputBindingsJson: Object.fromEntries(Object.entries(stepConfig.input ?? {}).filter((entry) => entry[1] !== undefined).map(([key, binding]) => [key, serializeBinding(binding)])),
13483
- timeoutSeconds: stepConfig.timeout ?? null,
13484
- advancementPolicyDefinition: serializeAdvancementPolicy(stepConfig.advancement)
13485
- }))
13486
- };
13487
- }
13488
- // src/definitions/pipelines/pipeline-definitions-client.ts
13489
- function createPipelineDefinitionsClient(baseUrl) {
13490
- const base = baseUrl.replace(/\/$/, "");
13491
- async function doFetch(path, method, headers, body) {
13492
- const requestHeaders = { ...headers };
13493
- if (body !== undefined) {
13494
- requestHeaders["Content-Type"] = "application/json";
13495
- }
13496
- const response = await fetch(`${base}${path}`, {
13497
- method,
13498
- headers: requestHeaders,
13499
- ...body !== undefined ? { body: JSON.stringify(body) } : {}
13500
- });
13501
- if (!response.ok) {
13502
- const err = await response.json().catch(() => null);
13503
- throw new Error(err?.title ?? `HTTP ${String(response.status)} ${method} ${path}`);
13504
- }
13505
- return response.json().catch(() => null);
13506
- }
13507
- return buildPipelineDefinitionsClient(base, doFetch);
13508
- }
13509
- var buildPipelineDefinitionsClient = (_base, doFetch) => ({
13510
- listByProjectId: async (projectId, options) => {
13511
- const path = `/api/linear-pipeline-definitions?projectId=${encodeURIComponent(projectId)}`;
13512
- const result = await doFetch(path, "GET", options?.headers ?? {});
13513
- return result ?? [];
13514
- },
13515
- create: async (body, options) => {
13516
- const result = await doFetch("/api/linear-pipeline-definitions", "POST", options?.headers ?? {}, body);
13517
- return result;
13518
- },
13519
- update: async (pipelineId, body, options) => {
13520
- await doFetch(`/api/linear-pipeline-definitions/${pipelineId}`, "PUT", options?.headers ?? {}, body);
13521
- },
13522
- addStep: async (pipelineId, body, options) => {
13523
- await doFetch(`/api/linear-pipeline-definitions/${pipelineId}/steps`, "POST", options?.headers ?? {}, body);
13524
- },
13525
- removeStep: async (pipelineId, stepId, options) => {
13526
- await doFetch(`/api/linear-pipeline-definitions/${pipelineId}/steps/${stepId}`, "DELETE", options?.headers ?? {});
13527
- }
13528
- });
13529
13392
  // ../../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
13530
13393
  var exports_external = {};
13531
13394
  __export(exports_external, {
@@ -13681,7 +13544,7 @@ __export(exports_external, {
13681
13544
  base64url: () => base64url2,
13682
13545
  base64: () => base642,
13683
13546
  array: () => array,
13684
- any: () => any2,
13547
+ any: () => any,
13685
13548
  _function: () => _function,
13686
13549
  _default: () => _default2,
13687
13550
  _ZodString: () => _ZodString,
@@ -13865,7 +13728,7 @@ __export(exports_schemas2, {
13865
13728
  base64url: () => base64url2,
13866
13729
  base64: () => base642,
13867
13730
  array: () => array,
13868
- any: () => any2,
13731
+ any: () => any,
13869
13732
  _function: () => _function,
13870
13733
  _default: () => _default2,
13871
13734
  _ZodString: () => _ZodString,
@@ -14654,7 +14517,7 @@ var ZodAny = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => {
14654
14517
  ZodType.init(inst, def);
14655
14518
  inst._zod.processJSONSchema = (ctx, json, params) => anyProcessor(inst, ctx, json, params);
14656
14519
  });
14657
- function any2() {
14520
+ function any() {
14658
14521
  return _any(ZodAny);
14659
14522
  }
14660
14523
  var ZodUnknown = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => {
@@ -15869,6 +15732,209 @@ function date4(params) {
15869
15732
 
15870
15733
  // ../../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
15871
15734
  config(en_default());
15735
+ // src/definitions/steps/step-features.ts
15736
+ var FEEDBACK_REQUEST_SIGNAL_KEY = "$boboddy_feedback_request_v1";
15737
+ var feedbackRequestItemSchema = exports_external.object({
15738
+ question: exports_external.string(),
15739
+ category: exports_external.string(),
15740
+ suggestedKey: exports_external.string().optional()
15741
+ });
15742
+ var feedbackRequestsFeature = {
15743
+ _resultExtension: exports_external.object({
15744
+ feedbackRequests: exports_external.array(feedbackRequestItemSchema).optional()
15745
+ }),
15746
+ _promptAddition: [
15747
+ "## Feedback Requests",
15748
+ "",
15749
+ "If you encounter anything that warrants human review, populate the `feedbackRequests` array:",
15750
+ "- **question**: The specific question to pose to a human reviewer",
15751
+ '- **category**: A grouping label for the feedback (e.g. `"accuracy"`, `"completeness"`)',
15752
+ "- **suggestedKey** *(optional)*: A suggested answer key for reference"
15753
+ ].join(`
15754
+ `),
15755
+ _signals: [
15756
+ {
15757
+ key: FEEDBACK_REQUEST_SIGNAL_KEY,
15758
+ sourcePath: "feedbackRequests",
15759
+ type: "array",
15760
+ required: false
15761
+ }
15762
+ ]
15763
+ };
15764
+ var Features = {
15765
+ feedbackRequests: Object.assign(() => feedbackRequestsFeature, {
15766
+ signal: {
15767
+ key: FEEDBACK_REQUEST_SIGNAL_KEY,
15768
+ find(signals) {
15769
+ const match = signals.find((s) => s.key === FEEDBACK_REQUEST_SIGNAL_KEY);
15770
+ if (!match)
15771
+ return;
15772
+ const parsed = exports_external.array(feedbackRequestItemSchema).safeParse(match.valueJson);
15773
+ return parsed.success ? parsed.data : undefined;
15774
+ }
15775
+ }
15776
+ })
15777
+ };
15778
+ // src/definitions/advancement-policies/define-advancement-policy.ts
15779
+ function signal(signal2, operator, value) {
15780
+ return { _tag: "signal", signal: signal2, operator, value };
15781
+ }
15782
+ function all(conditions, outcome) {
15783
+ if (outcome === undefined) {
15784
+ return { _tag: "all", conditions };
15785
+ }
15786
+ return { _tag: "rule", mode: "all", conditions, outcome };
15787
+ }
15788
+ function any2(conditions, outcome) {
15789
+ if (outcome === undefined) {
15790
+ return { _tag: "any", conditions };
15791
+ }
15792
+ return { _tag: "rule", mode: "any", conditions, outcome };
15793
+ }
15794
+ function when(signal2, operator, value, outcome) {
15795
+ return {
15796
+ _tag: "rule",
15797
+ mode: "all",
15798
+ conditions: [{ _tag: "signal", signal: signal2, operator, value }],
15799
+ outcome
15800
+ };
15801
+ }
15802
+ var Rule = { signal, all, any: any2, when };
15803
+ function resolveOutcome(outcome) {
15804
+ if (typeof outcome === "string") {
15805
+ return { type: outcome, params: null };
15806
+ }
15807
+ return { type: outcome.outcome, params: outcome.outcomeJson ?? null };
15808
+ }
15809
+ function serializeCondition(condition) {
15810
+ if (condition._tag === "signal") {
15811
+ return {
15812
+ fact: condition.signal,
15813
+ operator: condition.operator,
15814
+ value: condition.value
15815
+ };
15816
+ }
15817
+ if (condition._tag === "all") {
15818
+ return { all: condition.conditions.map(serializeCondition) };
15819
+ }
15820
+ return { any: condition.conditions.map(serializeCondition) };
15821
+ }
15822
+ function serializeRule(rule) {
15823
+ const resolved = resolveOutcome(rule.outcome);
15824
+ return {
15825
+ conditions: { [rule.mode]: rule.conditions.map(serializeCondition) },
15826
+ event: {
15827
+ type: resolved.type,
15828
+ ...resolved.params ? { params: resolved.params } : {}
15829
+ }
15830
+ };
15831
+ }
15832
+ function serializeAdvancementPolicy(policy) {
15833
+ if (!policy) {
15834
+ return {
15835
+ rulesJson: { rules: [] },
15836
+ defaultEventType: "continue",
15837
+ defaultEventParamsJson: null,
15838
+ allowedEventTypes: ["continue"]
15839
+ };
15840
+ }
15841
+ const defaultResolved = resolveOutcome(policy.defaultOutcome);
15842
+ const outcomeSet = new Set([defaultResolved.type]);
15843
+ const serializedRules = (policy.rules ?? []).map((rule) => {
15844
+ outcomeSet.add(resolveOutcome(rule.outcome).type);
15845
+ return serializeRule(rule);
15846
+ });
15847
+ return {
15848
+ rulesJson: { rules: serializedRules },
15849
+ defaultEventType: defaultResolved.type,
15850
+ defaultEventParamsJson: defaultResolved.params,
15851
+ allowedEventTypes: [...outcomeSet]
15852
+ };
15853
+ }
15854
+
15855
+ // src/definitions/pipelines/define-pipeline.ts
15856
+ function fromPipelineInput(_schema, path) {
15857
+ return { source: "pipeline_input", path };
15858
+ }
15859
+ function fromSignal(step, signalKey) {
15860
+ return { source: "step_signal", step, signalKey };
15861
+ }
15862
+ function stepOutput(step) {
15863
+ return { source: "step_output", step };
15864
+ }
15865
+ function serializeBinding(binding) {
15866
+ if (binding.source === "pipeline_input") {
15867
+ return { source: "pipeline_input", path: binding.path };
15868
+ }
15869
+ if (binding.source === "step_signal") {
15870
+ return {
15871
+ source: "step_signal",
15872
+ stepKey: binding.step.key,
15873
+ signalKey: binding.signalKey
15874
+ };
15875
+ }
15876
+ return { source: "step_output", stepKey: binding.step.key };
15877
+ }
15878
+ function definePipeline(config2) {
15879
+ const steps = config2.steps;
15880
+ return {
15881
+ key: config2.key,
15882
+ name: config2.name,
15883
+ description: config2.description ?? null,
15884
+ version: config2.version ?? 1,
15885
+ status: config2.status ?? "active",
15886
+ steps: steps.map((stepConfig, index) => ({
15887
+ stepKey: stepConfig.step.key,
15888
+ stepName: stepConfig.step.name,
15889
+ stepDescription: stepConfig.step.description,
15890
+ position: index + 1,
15891
+ inputBindingsJson: Object.fromEntries(Object.entries(stepConfig.input ?? {}).filter((entry) => entry[1] !== undefined).map(([key, binding]) => [key, serializeBinding(binding)])),
15892
+ timeoutSeconds: stepConfig.timeout ?? null,
15893
+ advancementPolicyDefinition: serializeAdvancementPolicy(stepConfig.advancement)
15894
+ }))
15895
+ };
15896
+ }
15897
+ // src/definitions/pipelines/pipeline-definitions-client.ts
15898
+ function createPipelineDefinitionsClient(baseUrl) {
15899
+ const base = baseUrl.replace(/\/$/, "");
15900
+ async function doFetch(path, method, headers, body) {
15901
+ const requestHeaders = { ...headers };
15902
+ if (body !== undefined) {
15903
+ requestHeaders["Content-Type"] = "application/json";
15904
+ }
15905
+ const response = await fetch(`${base}${path}`, {
15906
+ method,
15907
+ headers: requestHeaders,
15908
+ ...body !== undefined ? { body: JSON.stringify(body) } : {}
15909
+ });
15910
+ if (!response.ok) {
15911
+ const err = await response.json().catch(() => null);
15912
+ throw new Error(err?.title ?? `HTTP ${String(response.status)} ${method} ${path}`);
15913
+ }
15914
+ return response.json().catch(() => null);
15915
+ }
15916
+ return buildPipelineDefinitionsClient(base, doFetch);
15917
+ }
15918
+ var buildPipelineDefinitionsClient = (_base, doFetch) => ({
15919
+ listByProjectId: async (projectId, options) => {
15920
+ const path = `/api/linear-pipeline-definitions?projectId=${encodeURIComponent(projectId)}`;
15921
+ const result = await doFetch(path, "GET", options?.headers ?? {});
15922
+ return result ?? [];
15923
+ },
15924
+ create: async (body, options) => {
15925
+ const result = await doFetch("/api/linear-pipeline-definitions", "POST", options?.headers ?? {}, body);
15926
+ return result;
15927
+ },
15928
+ update: async (pipelineId, body, options) => {
15929
+ await doFetch(`/api/linear-pipeline-definitions/${pipelineId}`, "PUT", options?.headers ?? {}, body);
15930
+ },
15931
+ addStep: async (pipelineId, body, options) => {
15932
+ await doFetch(`/api/linear-pipeline-definitions/${pipelineId}/steps`, "POST", options?.headers ?? {}, body);
15933
+ },
15934
+ removeStep: async (pipelineId, stepId, options) => {
15935
+ await doFetch(`/api/linear-pipeline-definitions/${pipelineId}/steps/${stepId}`, "DELETE", options?.headers ?? {});
15936
+ }
15937
+ });
15872
15938
  // src/opencode-mcp.ts
15873
15939
  var nonEmptyStringSchema = exports_external.string().trim().min(1);
15874
15940
  var mcpStringMapSchema = exports_external.record(exports_external.string(), exports_external.string());
@@ -16538,6 +16604,7 @@ export {
16538
16604
  PipelineExecutions,
16539
16605
  PipelineDefinitions,
16540
16606
  FeedbackRequests,
16607
+ Features,
16541
16608
  BoboddyClient,
16542
16609
  BOBODDY_CONFIG_RELATIVE_PATH,
16543
16610
  Api
package/package.json CHANGED
@@ -1,56 +1,40 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@boboddy/sdk",
4
- "version": "0.1.1-alpha",
4
+ "version": "0.1.3-alpha",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./dist/index.d.ts",
9
- "bun": "./src/index.ts",
10
- "import": "./src/index.ts",
11
- "default": "./src/index.ts"
8
+ "import": "./dist/index.js",
9
+ "types": "./dist/index.d.ts"
12
10
  },
13
11
  "./client": {
14
- "types": "./dist/client.d.ts",
15
- "bun": "./src/client.ts",
16
- "import": "./src/client.ts",
17
- "default": "./src/client.ts"
12
+ "import": "./dist/client.js",
13
+ "types": "./dist/client.d.ts"
18
14
  },
19
15
  "./definitions/steps": {
20
- "types": "./dist/definitions/steps/index.d.ts",
21
- "bun": "./src/definitions/steps/index.ts",
22
- "import": "./src/definitions/steps/index.ts",
23
- "default": "./src/definitions/steps/index.ts"
16
+ "import": "./dist/definitions/steps/index.js",
17
+ "types": "./dist/definitions/steps/index.d.ts"
24
18
  },
25
19
  "./definitions/pipelines": {
26
- "types": "./dist/definitions/pipelines/index.d.ts",
27
- "bun": "./src/definitions/pipelines/index.ts",
28
- "import": "./src/definitions/pipelines/index.ts",
29
- "default": "./src/definitions/pipelines/index.ts"
20
+ "import": "./dist/definitions/pipelines/index.js",
21
+ "types": "./dist/definitions/pipelines/index.d.ts"
30
22
  },
31
23
  "./definitions/advancement-policies": {
32
- "types": "./dist/definitions/advancement-policies/index.d.ts",
33
- "bun": "./src/definitions/advancement-policies/index.ts",
34
- "import": "./src/definitions/advancement-policies/index.ts",
35
- "default": "./src/definitions/advancement-policies/index.ts"
24
+ "import": "./dist/definitions/advancement-policies/index.js",
25
+ "types": "./dist/definitions/advancement-policies/index.d.ts"
36
26
  },
37
27
  "./opencode-mcp": {
38
- "types": "./dist/opencode-mcp.d.ts",
39
- "bun": "./src/opencode-mcp.ts",
40
- "import": "./src/opencode-mcp.ts",
41
- "default": "./src/opencode-mcp.ts"
28
+ "import": "./dist/opencode-mcp.js",
29
+ "types": "./dist/opencode-mcp.d.ts"
42
30
  },
43
31
  "./jsonc": {
44
- "types": "./dist/jsonc.d.ts",
45
- "bun": "./src/jsonc.ts",
46
- "import": "./src/jsonc.ts",
47
- "default": "./src/jsonc.ts"
32
+ "import": "./dist/jsonc.js",
33
+ "types": "./dist/jsonc.d.ts"
48
34
  },
49
35
  "./boboddy-config-parser": {
50
- "types": "./dist/boboddy-config-parser.d.ts",
51
- "bun": "./src/boboddy-config-parser.ts",
52
- "import": "./src/boboddy-config-parser.ts",
53
- "default": "./src/boboddy-config-parser.ts"
36
+ "import": "./dist/boboddy-config-parser.js",
37
+ "types": "./dist/boboddy-config-parser.d.ts"
54
38
  }
55
39
  },
56
40
  "files": [
@@ -61,55 +45,10 @@
61
45
  "type": "git",
62
46
  "url": "https://github.com/connorivy/boboddy"
63
47
  },
64
- "publishConfig": {
65
- "access": "public",
66
- "exports": {
67
- ".": {
68
- "types": "./dist/index.d.ts",
69
- "import": "./dist/index.js",
70
- "default": "./dist/index.js"
71
- },
72
- "./client": {
73
- "types": "./dist/client.d.ts",
74
- "import": "./dist/client.js",
75
- "default": "./dist/client.js"
76
- },
77
- "./definitions/steps": {
78
- "types": "./dist/definitions/steps/index.d.ts",
79
- "import": "./dist/definitions/steps/index.js",
80
- "default": "./dist/definitions/steps/index.js"
81
- },
82
- "./definitions/pipelines": {
83
- "types": "./dist/definitions/pipelines/index.d.ts",
84
- "import": "./dist/definitions/pipelines/index.js",
85
- "default": "./dist/definitions/pipelines/index.js"
86
- },
87
- "./definitions/advancement-policies": {
88
- "types": "./dist/definitions/advancement-policies/index.d.ts",
89
- "import": "./dist/definitions/advancement-policies/index.js",
90
- "default": "./dist/definitions/advancement-policies/index.js"
91
- },
92
- "./opencode-mcp": {
93
- "types": "./dist/opencode-mcp.d.ts",
94
- "import": "./dist/opencode-mcp.js",
95
- "default": "./dist/opencode-mcp.js"
96
- },
97
- "./jsonc": {
98
- "types": "./dist/jsonc.d.ts",
99
- "import": "./dist/jsonc.js",
100
- "default": "./dist/jsonc.js"
101
- },
102
- "./boboddy-config-parser": {
103
- "types": "./dist/boboddy-config-parser.d.ts",
104
- "import": "./dist/boboddy-config-parser.js",
105
- "default": "./dist/boboddy-config-parser.js"
106
- }
107
- }
108
- },
109
48
  "scripts": {
110
49
  "generate": "openapi-ts",
111
50
  "build": "bun run script/build.ts",
112
- "declarations": "bun run script/declarations.ts",
51
+ "link:local": "bun link",
113
52
  "test": "bun test test",
114
53
  "typecheck": "tsgo -p tsconfig.json --noEmit"
115
54
  },