@boboddy/sdk 0.1.0-alpha → 0.1.2-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.
- package/dist/definitions/pipelines/index.d.ts +1 -0
- package/dist/definitions/pipelines/index.js +42 -0
- package/dist/definitions/pipelines/pipeline-definitions-client.d.ts +56 -0
- package/dist/definitions/steps/define-step.d.ts +5 -2
- package/dist/definitions/steps/index.d.ts +1 -0
- package/dist/definitions/steps/index.js +2420 -10
- package/dist/definitions/steps/step-features.d.ts +42 -0
- package/dist/index.js +240 -131
- package/package.json +56 -10
|
@@ -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:
|
|
13325
|
+
prompt: effectivePrompt,
|
|
13312
13326
|
inputSchemaJson: config2.input ? toJSONSchema(config2.input) : null,
|
|
13313
|
-
resultSchemaJson:
|
|
13314
|
-
signalExtractorDefinitions:
|
|
13315
|
-
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
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,125 +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
13392
|
// ../../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
13489
13393
|
var exports_external = {};
|
|
13490
13394
|
__export(exports_external, {
|
|
@@ -13640,7 +13544,7 @@ __export(exports_external, {
|
|
|
13640
13544
|
base64url: () => base64url2,
|
|
13641
13545
|
base64: () => base642,
|
|
13642
13546
|
array: () => array,
|
|
13643
|
-
any: () =>
|
|
13547
|
+
any: () => any,
|
|
13644
13548
|
_function: () => _function,
|
|
13645
13549
|
_default: () => _default2,
|
|
13646
13550
|
_ZodString: () => _ZodString,
|
|
@@ -13824,7 +13728,7 @@ __export(exports_schemas2, {
|
|
|
13824
13728
|
base64url: () => base64url2,
|
|
13825
13729
|
base64: () => base642,
|
|
13826
13730
|
array: () => array,
|
|
13827
|
-
any: () =>
|
|
13731
|
+
any: () => any,
|
|
13828
13732
|
_function: () => _function,
|
|
13829
13733
|
_default: () => _default2,
|
|
13830
13734
|
_ZodString: () => _ZodString,
|
|
@@ -14613,7 +14517,7 @@ var ZodAny = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => {
|
|
|
14613
14517
|
ZodType.init(inst, def);
|
|
14614
14518
|
inst._zod.processJSONSchema = (ctx, json, params) => anyProcessor(inst, ctx, json, params);
|
|
14615
14519
|
});
|
|
14616
|
-
function
|
|
14520
|
+
function any() {
|
|
14617
14521
|
return _any(ZodAny);
|
|
14618
14522
|
}
|
|
14619
14523
|
var ZodUnknown = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => {
|
|
@@ -15828,6 +15732,209 @@ function date4(params) {
|
|
|
15828
15732
|
|
|
15829
15733
|
// ../../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
15830
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
|
+
});
|
|
15831
15938
|
// src/opencode-mcp.ts
|
|
15832
15939
|
var nonEmptyStringSchema = exports_external.string().trim().min(1);
|
|
15833
15940
|
var mcpStringMapSchema = exports_external.record(exports_external.string(), exports_external.string());
|
|
@@ -16485,6 +16592,7 @@ export {
|
|
|
16485
16592
|
definePipeline,
|
|
16486
16593
|
createStepExecutionPlaneClient,
|
|
16487
16594
|
createStepDefinitionsClient,
|
|
16595
|
+
createPipelineDefinitionsClient,
|
|
16488
16596
|
createBoboddyClient,
|
|
16489
16597
|
WorkItems,
|
|
16490
16598
|
StepExecutions,
|
|
@@ -16496,6 +16604,7 @@ export {
|
|
|
16496
16604
|
PipelineExecutions,
|
|
16497
16605
|
PipelineDefinitions,
|
|
16498
16606
|
FeedbackRequests,
|
|
16607
|
+
Features,
|
|
16499
16608
|
BoboddyClient,
|
|
16500
16609
|
BOBODDY_CONFIG_RELATIVE_PATH,
|
|
16501
16610
|
Api
|
package/package.json
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@boboddy/sdk",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2-alpha",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
|
-
"types": "./
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
9
|
"bun": "./src/index.ts",
|
|
10
10
|
"import": "./src/index.ts",
|
|
11
11
|
"default": "./src/index.ts"
|
|
12
12
|
},
|
|
13
13
|
"./client": {
|
|
14
|
-
"types": "./
|
|
14
|
+
"types": "./dist/client.d.ts",
|
|
15
15
|
"bun": "./src/client.ts",
|
|
16
16
|
"import": "./src/client.ts",
|
|
17
17
|
"default": "./src/client.ts"
|
|
18
18
|
},
|
|
19
19
|
"./definitions/steps": {
|
|
20
|
-
"types": "./
|
|
20
|
+
"types": "./dist/definitions/steps/index.d.ts",
|
|
21
21
|
"bun": "./src/definitions/steps/index.ts",
|
|
22
22
|
"import": "./src/definitions/steps/index.ts",
|
|
23
23
|
"default": "./src/definitions/steps/index.ts"
|
|
24
24
|
},
|
|
25
25
|
"./definitions/pipelines": {
|
|
26
|
-
"types": "./
|
|
26
|
+
"types": "./dist/definitions/pipelines/index.d.ts",
|
|
27
27
|
"bun": "./src/definitions/pipelines/index.ts",
|
|
28
28
|
"import": "./src/definitions/pipelines/index.ts",
|
|
29
29
|
"default": "./src/definitions/pipelines/index.ts"
|
|
30
30
|
},
|
|
31
31
|
"./definitions/advancement-policies": {
|
|
32
|
-
"types": "./
|
|
32
|
+
"types": "./dist/definitions/advancement-policies/index.d.ts",
|
|
33
33
|
"bun": "./src/definitions/advancement-policies/index.ts",
|
|
34
34
|
"import": "./src/definitions/advancement-policies/index.ts",
|
|
35
35
|
"default": "./src/definitions/advancement-policies/index.ts"
|
|
36
36
|
},
|
|
37
37
|
"./opencode-mcp": {
|
|
38
|
-
"types": "./
|
|
38
|
+
"types": "./dist/opencode-mcp.d.ts",
|
|
39
39
|
"bun": "./src/opencode-mcp.ts",
|
|
40
40
|
"import": "./src/opencode-mcp.ts",
|
|
41
41
|
"default": "./src/opencode-mcp.ts"
|
|
42
42
|
},
|
|
43
43
|
"./jsonc": {
|
|
44
|
-
"types": "./
|
|
44
|
+
"types": "./dist/jsonc.d.ts",
|
|
45
45
|
"bun": "./src/jsonc.ts",
|
|
46
46
|
"import": "./src/jsonc.ts",
|
|
47
47
|
"default": "./src/jsonc.ts"
|
|
48
48
|
},
|
|
49
49
|
"./boboddy-config-parser": {
|
|
50
|
-
"types": "./
|
|
50
|
+
"types": "./dist/boboddy-config-parser.d.ts",
|
|
51
51
|
"bun": "./src/boboddy-config-parser.ts",
|
|
52
52
|
"import": "./src/boboddy-config-parser.ts",
|
|
53
53
|
"default": "./src/boboddy-config-parser.ts"
|
|
@@ -57,8 +57,54 @@
|
|
|
57
57
|
"dist",
|
|
58
58
|
"README.md"
|
|
59
59
|
],
|
|
60
|
+
"repository": {
|
|
61
|
+
"type": "git",
|
|
62
|
+
"url": "https://github.com/connorivy/boboddy"
|
|
63
|
+
},
|
|
60
64
|
"publishConfig": {
|
|
61
|
-
"access": "public"
|
|
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
|
+
}
|
|
62
108
|
},
|
|
63
109
|
"scripts": {
|
|
64
110
|
"generate": "openapi-ts",
|