@thallylabs/cli 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +47 -47
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -278,7 +278,7 @@ async function runDeploy(args) {
278
278
  import { readFileSync as readFileSync3 } from "fs";
279
279
  import Anthropic from "@anthropic-ai/sdk";
280
280
 
281
- // ../agent/dist/chunk-7RSLSWEK.js
281
+ // ../../../thally-migration-content-fidelity/packages/agent/dist/chunk-7RSLSWEK.js
282
282
  import fs from "fs";
283
283
  import path3 from "path";
284
284
  import { AGENT_BRANCH_PREFIX, DOCS_PREVIEW_LABEL, buildTrackInstruction } from "@thallylabs/mcp/track";
@@ -529,11 +529,11 @@ function scaffoldAgentWorkflow(projectDir, docsRepo = "<owner>/<docs-repo>") {
529
529
  return { written, senderSnippet: mentionSenderWorkflow(docsRepo) };
530
530
  }
531
531
 
532
- // ../agent/dist/index.js
532
+ // ../../../thally-migration-content-fidelity/packages/agent/dist/index.js
533
533
  import { execFileSync as execFileSync2 } from "child_process";
534
534
  import { execFileSync } from "child_process";
535
535
 
536
- // ../../node_modules/zod-to-json-schema/dist/esm/Options.js
536
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/Options.js
537
537
  var ignoreOverride = /* @__PURE__ */ Symbol("Let zodToJsonSchema decide on which parser to use");
538
538
  var defaultOptions = {
539
539
  name: void 0,
@@ -567,7 +567,7 @@ var getDefaultOptions = (options) => typeof options === "string" ? {
567
567
  ...options
568
568
  };
569
569
 
570
- // ../../node_modules/zod-to-json-schema/dist/esm/Refs.js
570
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/Refs.js
571
571
  var getRefs = (options) => {
572
572
  const _options = getDefaultOptions(options);
573
573
  const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;
@@ -588,7 +588,7 @@ var getRefs = (options) => {
588
588
  };
589
589
  };
590
590
 
591
- // ../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js
591
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/errorMessages.js
592
592
  function addErrorMessage(res, key, errorMessage, refs) {
593
593
  if (!refs?.errorMessages)
594
594
  return;
@@ -604,7 +604,7 @@ function setResponseValueAndErrors(res, key, value, errorMessage, refs) {
604
604
  addErrorMessage(res, key, errorMessage, refs);
605
605
  }
606
606
 
607
- // ../../node_modules/zod-to-json-schema/dist/esm/getRelativePath.js
607
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js
608
608
  var getRelativePath = (pathA, pathB) => {
609
609
  let i = 0;
610
610
  for (; i < pathA.length && i < pathB.length; i++) {
@@ -614,7 +614,7 @@ var getRelativePath = (pathA, pathB) => {
614
614
  return [(pathA.length - i).toString(), ...pathB.slice(i)].join("/");
615
615
  };
616
616
 
617
- // ../../node_modules/zod/v3/helpers/util.js
617
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/helpers/util.js
618
618
  var util;
619
619
  (function(util2) {
620
620
  util2.assertEqual = (_) => {
@@ -748,7 +748,7 @@ var getParsedType = (data) => {
748
748
  }
749
749
  };
750
750
 
751
- // ../../node_modules/zod/v3/ZodError.js
751
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/ZodError.js
752
752
  var ZodIssueCode = util.arrayToEnum([
753
753
  "invalid_type",
754
754
  "invalid_literal",
@@ -862,7 +862,7 @@ ZodError.create = (issues) => {
862
862
  return error;
863
863
  };
864
864
 
865
- // ../../node_modules/zod/v3/locales/en.js
865
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/locales/en.js
866
866
  var errorMap = (issue, _ctx) => {
867
867
  let message;
868
868
  switch (issue.code) {
@@ -965,13 +965,13 @@ var errorMap = (issue, _ctx) => {
965
965
  };
966
966
  var en_default = errorMap;
967
967
 
968
- // ../../node_modules/zod/v3/errors.js
968
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/errors.js
969
969
  var overrideErrorMap = en_default;
970
970
  function getErrorMap() {
971
971
  return overrideErrorMap;
972
972
  }
973
973
 
974
- // ../../node_modules/zod/v3/helpers/parseUtil.js
974
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/helpers/parseUtil.js
975
975
  var makeIssue = (params) => {
976
976
  const { data, path: path5, errorMaps, issueData } = params;
977
977
  const fullPath = [...path5, ...issueData.path || []];
@@ -1080,14 +1080,14 @@ var isDirty = (x) => x.status === "dirty";
1080
1080
  var isValid = (x) => x.status === "valid";
1081
1081
  var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
1082
1082
 
1083
- // ../../node_modules/zod/v3/helpers/errorUtil.js
1083
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/helpers/errorUtil.js
1084
1084
  var errorUtil;
1085
1085
  (function(errorUtil2) {
1086
1086
  errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {};
1087
1087
  errorUtil2.toString = (message) => typeof message === "string" ? message : message?.message;
1088
1088
  })(errorUtil || (errorUtil = {}));
1089
1089
 
1090
- // ../../node_modules/zod/v3/types.js
1090
+ // ../../../thally-migration-content-fidelity/node_modules/zod/v3/types.js
1091
1091
  var ParseInputLazyPath = class {
1092
1092
  constructor(parent, value, path5, key) {
1093
1093
  this._cachedPath = [];
@@ -4490,7 +4490,7 @@ var nullableType = ZodNullable.create;
4490
4490
  var preprocessType = ZodEffects.createWithPreprocess;
4491
4491
  var pipelineType = ZodPipeline.create;
4492
4492
 
4493
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js
4493
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/any.js
4494
4494
  function parseAnyDef(refs) {
4495
4495
  if (refs.target !== "openAi") {
4496
4496
  return {};
@@ -4506,7 +4506,7 @@ function parseAnyDef(refs) {
4506
4506
  };
4507
4507
  }
4508
4508
 
4509
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js
4509
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/array.js
4510
4510
  function parseArrayDef(def, refs) {
4511
4511
  const res = {
4512
4512
  type: "array"
@@ -4530,7 +4530,7 @@ function parseArrayDef(def, refs) {
4530
4530
  return res;
4531
4531
  }
4532
4532
 
4533
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
4533
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
4534
4534
  function parseBigintDef(def, refs) {
4535
4535
  const res = {
4536
4536
  type: "integer",
@@ -4576,24 +4576,24 @@ function parseBigintDef(def, refs) {
4576
4576
  return res;
4577
4577
  }
4578
4578
 
4579
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js
4579
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js
4580
4580
  function parseBooleanDef() {
4581
4581
  return {
4582
4582
  type: "boolean"
4583
4583
  };
4584
4584
  }
4585
4585
 
4586
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
4586
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
4587
4587
  function parseBrandedDef(_def, refs) {
4588
4588
  return parseDef(_def.type._def, refs);
4589
4589
  }
4590
4590
 
4591
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
4591
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
4592
4592
  var parseCatchDef = (def, refs) => {
4593
4593
  return parseDef(def.innerType._def, refs);
4594
4594
  };
4595
4595
 
4596
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js
4596
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/date.js
4597
4597
  function parseDateDef(def, refs, overrideDateStrategy) {
4598
4598
  const strategy = overrideDateStrategy ?? refs.dateStrategy;
4599
4599
  if (Array.isArray(strategy)) {
@@ -4652,7 +4652,7 @@ var integerDateParser = (def, refs) => {
4652
4652
  return res;
4653
4653
  };
4654
4654
 
4655
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js
4655
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/default.js
4656
4656
  function parseDefaultDef(_def, refs) {
4657
4657
  return {
4658
4658
  ...parseDef(_def.innerType._def, refs),
@@ -4660,12 +4660,12 @@ function parseDefaultDef(_def, refs) {
4660
4660
  };
4661
4661
  }
4662
4662
 
4663
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
4663
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
4664
4664
  function parseEffectsDef(_def, refs) {
4665
4665
  return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef(refs);
4666
4666
  }
4667
4667
 
4668
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js
4668
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js
4669
4669
  function parseEnumDef(def) {
4670
4670
  return {
4671
4671
  type: "string",
@@ -4673,7 +4673,7 @@ function parseEnumDef(def) {
4673
4673
  };
4674
4674
  }
4675
4675
 
4676
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
4676
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
4677
4677
  var isJsonSchema7AllOfType = (type) => {
4678
4678
  if ("type" in type && type.type === "string")
4679
4679
  return false;
@@ -4715,7 +4715,7 @@ function parseIntersectionDef(def, refs) {
4715
4715
  } : void 0;
4716
4716
  }
4717
4717
 
4718
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js
4718
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js
4719
4719
  function parseLiteralDef(def, refs) {
4720
4720
  const parsedType = typeof def.value;
4721
4721
  if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") {
@@ -4735,7 +4735,7 @@ function parseLiteralDef(def, refs) {
4735
4735
  };
4736
4736
  }
4737
4737
 
4738
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js
4738
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
4739
4739
  var emojiRegex2 = void 0;
4740
4740
  var zodPatterns = {
4741
4741
  /**
@@ -5060,7 +5060,7 @@ function stringifyRegExpWithFlags(regex, refs) {
5060
5060
  return pattern;
5061
5061
  }
5062
5062
 
5063
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js
5063
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
5064
5064
  function parseRecordDef(def, refs) {
5065
5065
  if (refs.target === "openAi") {
5066
5066
  console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.");
@@ -5112,7 +5112,7 @@ function parseRecordDef(def, refs) {
5112
5112
  return schema;
5113
5113
  }
5114
5114
 
5115
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js
5115
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/map.js
5116
5116
  function parseMapDef(def, refs) {
5117
5117
  if (refs.mapStrategy === "record") {
5118
5118
  return parseRecordDef(def, refs);
@@ -5137,7 +5137,7 @@ function parseMapDef(def, refs) {
5137
5137
  };
5138
5138
  }
5139
5139
 
5140
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js
5140
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js
5141
5141
  function parseNativeEnumDef(def) {
5142
5142
  const object = def.values;
5143
5143
  const actualKeys = Object.keys(def.values).filter((key) => {
@@ -5151,7 +5151,7 @@ function parseNativeEnumDef(def) {
5151
5151
  };
5152
5152
  }
5153
5153
 
5154
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js
5154
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/never.js
5155
5155
  function parseNeverDef(refs) {
5156
5156
  return refs.target === "openAi" ? void 0 : {
5157
5157
  not: parseAnyDef({
@@ -5161,7 +5161,7 @@ function parseNeverDef(refs) {
5161
5161
  };
5162
5162
  }
5163
5163
 
5164
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js
5164
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/null.js
5165
5165
  function parseNullDef(refs) {
5166
5166
  return refs.target === "openApi3" ? {
5167
5167
  enum: ["null"],
@@ -5171,7 +5171,7 @@ function parseNullDef(refs) {
5171
5171
  };
5172
5172
  }
5173
5173
 
5174
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js
5174
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/union.js
5175
5175
  var primitiveMappings = {
5176
5176
  ZodString: "string",
5177
5177
  ZodNumber: "number",
@@ -5239,7 +5239,7 @@ var asAnyOf = (def, refs) => {
5239
5239
  return anyOf.length ? { anyOf } : void 0;
5240
5240
  };
5241
5241
 
5242
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
5242
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
5243
5243
  function parseNullableDef(def, refs) {
5244
5244
  if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(def.innerType._def.typeName) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {
5245
5245
  if (refs.target === "openApi3") {
@@ -5271,7 +5271,7 @@ function parseNullableDef(def, refs) {
5271
5271
  return base && { anyOf: [base, { type: "null" }] };
5272
5272
  }
5273
5273
 
5274
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js
5274
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/number.js
5275
5275
  function parseNumberDef(def, refs) {
5276
5276
  const res = {
5277
5277
  type: "number"
@@ -5320,7 +5320,7 @@ function parseNumberDef(def, refs) {
5320
5320
  return res;
5321
5321
  }
5322
5322
 
5323
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js
5323
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/object.js
5324
5324
  function parseObjectDef(def, refs) {
5325
5325
  const forceOptionalIntoNullable = refs.target === "openAi";
5326
5326
  const result = {
@@ -5390,7 +5390,7 @@ function safeIsOptional(schema) {
5390
5390
  }
5391
5391
  }
5392
5392
 
5393
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
5393
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
5394
5394
  var parseOptionalDef = (def, refs) => {
5395
5395
  if (refs.currentPath.toString() === refs.propertyPath?.toString()) {
5396
5396
  return parseDef(def.innerType._def, refs);
@@ -5409,7 +5409,7 @@ var parseOptionalDef = (def, refs) => {
5409
5409
  } : parseAnyDef(refs);
5410
5410
  };
5411
5411
 
5412
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
5412
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
5413
5413
  var parsePipelineDef = (def, refs) => {
5414
5414
  if (refs.pipeStrategy === "input") {
5415
5415
  return parseDef(def.in._def, refs);
@@ -5429,12 +5429,12 @@ var parsePipelineDef = (def, refs) => {
5429
5429
  };
5430
5430
  };
5431
5431
 
5432
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
5432
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
5433
5433
  function parsePromiseDef(def, refs) {
5434
5434
  return parseDef(def.type._def, refs);
5435
5435
  }
5436
5436
 
5437
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js
5437
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/set.js
5438
5438
  function parseSetDef(def, refs) {
5439
5439
  const items = parseDef(def.valueType._def, {
5440
5440
  ...refs,
@@ -5454,7 +5454,7 @@ function parseSetDef(def, refs) {
5454
5454
  return schema;
5455
5455
  }
5456
5456
 
5457
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
5457
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
5458
5458
  function parseTupleDef(def, refs) {
5459
5459
  if (def.rest) {
5460
5460
  return {
@@ -5482,24 +5482,24 @@ function parseTupleDef(def, refs) {
5482
5482
  }
5483
5483
  }
5484
5484
 
5485
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
5485
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
5486
5486
  function parseUndefinedDef(refs) {
5487
5487
  return {
5488
5488
  not: parseAnyDef(refs)
5489
5489
  };
5490
5490
  }
5491
5491
 
5492
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
5492
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
5493
5493
  function parseUnknownDef(refs) {
5494
5494
  return parseAnyDef(refs);
5495
5495
  }
5496
5496
 
5497
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
5497
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
5498
5498
  var parseReadonlyDef = (def, refs) => {
5499
5499
  return parseDef(def.innerType._def, refs);
5500
5500
  };
5501
5501
 
5502
- // ../../node_modules/zod-to-json-schema/dist/esm/selectParser.js
5502
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/selectParser.js
5503
5503
  var selectParser = (def, typeName, refs) => {
5504
5504
  switch (typeName) {
5505
5505
  case ZodFirstPartyTypeKind.ZodString:
@@ -5575,7 +5575,7 @@ var selectParser = (def, typeName, refs) => {
5575
5575
  }
5576
5576
  };
5577
5577
 
5578
- // ../../node_modules/zod-to-json-schema/dist/esm/parseDef.js
5578
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/parseDef.js
5579
5579
  function parseDef(def, refs, forceResolution = false) {
5580
5580
  const seenItem = refs.seen.get(def);
5581
5581
  if (refs.override) {
@@ -5631,7 +5631,7 @@ var addMeta = (def, refs, jsonSchema) => {
5631
5631
  return jsonSchema;
5632
5632
  };
5633
5633
 
5634
- // ../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
5634
+ // ../../../thally-migration-content-fidelity/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
5635
5635
  var zodToJsonSchema = (schema, options) => {
5636
5636
  const refs = getRefs(options);
5637
5637
  let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name2, schema2]) => ({
@@ -5693,7 +5693,7 @@ var zodToJsonSchema = (schema, options) => {
5693
5693
  return combined;
5694
5694
  };
5695
5695
 
5696
- // ../agent/dist/index.js
5696
+ // ../../../thally-migration-content-fidelity/packages/agent/dist/index.js
5697
5697
  import { tools as mcpTools, getTool } from "@thallylabs/mcp/tools";
5698
5698
  import { spawnSync } from "child_process";
5699
5699
  import { createRequire as createRequire2 } from "module";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thallylabs/cli",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "The unified thally CLI — author content + config; the framework stays a hidden runtime",
5
5
  "type": "module",
6
6
  "engines": {
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sdk": "^0.78.0",
27
- "@thallylabs/mcp": "0.7.2",
28
- "create-thally-docs": "0.7.6"
27
+ "@thallylabs/mcp": "0.7.4",
28
+ "create-thally-docs": "0.7.8"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@thallylabs/agent": "*",