xrefkit 0.4.9__tar.gz → 0.4.10__tar.gz
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.
- {xrefkit-0.4.9/xrefkit.egg-info → xrefkit-0.4.10}/PKG-INFO +1 -1
- {xrefkit-0.4.9 → xrefkit-0.4.10}/pyproject.toml +1 -1
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_cli.py +57 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/__init__.py +1 -1
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/import_skill.py +55 -22
- {xrefkit-0.4.9 → xrefkit-0.4.10/xrefkit.egg-info}/PKG-INFO +1 -1
- {xrefkit-0.4.9 → xrefkit-0.4.10}/LICENSE +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/README.md +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/setup.cfg +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_base_sync_ownership.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_boundary_analysis.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_brownfield_file_editing_protocol.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_calibration_lint.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_check_skill_knowledge_xids.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_collect_analyzer_sarif.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_convert_to_xrefkit_skill.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_cs_scope_probe.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_csharp_commonality.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_csharp_naming_profile.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_ctx.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_cutover_readiness.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_dashboard.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_error_policy_audit.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_error_policy_locator.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_fm_multiroot.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_gate.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_goal_desired_state.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_host_precheck.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_human_evaluation.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_instruction_workflow.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_knowledge_relations_validator.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_mcp_setup.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_ownership.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_packmeta.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_project_quality_baseline.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_resource_provider.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_runtime_contracts.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_sarif_to_locator.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_skill_runtime_audit.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_skillmeta.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_skills_sync.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_structure_catalog.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xref.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xrefkit_instance.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xrefkit_tools.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xrefkit_v2_discovery.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xrefkit_v2_models.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/tests/test_xrefkit_v2_pipeline.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/__main__.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/boundary_analysis.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/catalog_cli.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/cli.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/contracts.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/ctx.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/dashboard.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/discovery.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/gate.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/goalstate.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/hashing.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/host_precheck.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/instance.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/loaders.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/__init__.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/audit.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/bootstrap.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/catalog.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/cli.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/client_cache.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/client_flow.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/context_registry.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/context_token.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/contracts.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/dist.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/ownership.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/repository.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/schemas.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/server.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/setup.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp/startup_contract_pack.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/mcp_tools.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/__init__.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/common.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/effective_bundle.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/human_evaluation.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/local_manifest.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/package_manifest.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/run_log.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/server_config.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/models/skill_definition.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/operations_cli.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/ownership.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/packmeta.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/registry.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resolver.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resource_provider.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/contracts.json +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/current.json +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/7a682a5272907354/contracts.json +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/7a682a5272907354/model_body.md +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/9929294385ccb7b0/contracts.json +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/9929294385ccb7b0/model_body.md +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/model_body.md +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/runlog.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/skillmeta.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/skillrun.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/skills_sync.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/structure_catalog.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/tools/__init__.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/tools/__main__.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/v2_cli.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/workspace.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/xref.py +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit.egg-info/SOURCES.txt +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit.egg-info/dependency_links.txt +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit.egg-info/entry_points.txt +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit.egg-info/requires.txt +0 -0
- {xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit.egg-info/top_level.txt +0 -0
|
@@ -1464,6 +1464,63 @@ class CliTests(unittest.TestCase):
|
|
|
1464
1464
|
self.assertIn("## Closure Gate\n\n- status: `done`", text)
|
|
1465
1465
|
self.assertIn("`closure` -> `done` role=`closure_gate`: closure gate accepted completed run", text)
|
|
1466
1466
|
|
|
1467
|
+
def test_skill_import_invalid_batch_input_returns_safe_json_error(self) -> None:
|
|
1468
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
1469
|
+
root = Path(tmp) / "repo"
|
|
1470
|
+
source = Path(tmp) / "not-a-batch"
|
|
1471
|
+
source.mkdir()
|
|
1472
|
+
|
|
1473
|
+
stdout = io.StringIO()
|
|
1474
|
+
stderr = io.StringIO()
|
|
1475
|
+
with contextlib.redirect_stdout(stdout), contextlib.redirect_stderr(stderr):
|
|
1476
|
+
exit_code = main(
|
|
1477
|
+
[
|
|
1478
|
+
"skill",
|
|
1479
|
+
"import",
|
|
1480
|
+
str(source),
|
|
1481
|
+
"--root",
|
|
1482
|
+
str(root),
|
|
1483
|
+
"--batch",
|
|
1484
|
+
"--json",
|
|
1485
|
+
]
|
|
1486
|
+
)
|
|
1487
|
+
|
|
1488
|
+
payload = json.loads(stdout.getvalue())
|
|
1489
|
+
self.assertEqual(2, exit_code)
|
|
1490
|
+
self.assertFalse(payload["ok"])
|
|
1491
|
+
self.assertEqual("invalid_input", payload["error"]["code"])
|
|
1492
|
+
self.assertEqual("batch source root must contain a skills/ directory", payload["error"]["message"])
|
|
1493
|
+
self.assertNotIn(str(root), stdout.getvalue())
|
|
1494
|
+
self.assertNotIn(str(source), stdout.getvalue())
|
|
1495
|
+
self.assertEqual("", stderr.getvalue())
|
|
1496
|
+
|
|
1497
|
+
def test_skill_import_missing_document_returns_safe_text_error(self) -> None:
|
|
1498
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
1499
|
+
root = Path(tmp) / "repo"
|
|
1500
|
+
source = Path(tmp) / "empty-skill"
|
|
1501
|
+
source.mkdir()
|
|
1502
|
+
|
|
1503
|
+
stdout = io.StringIO()
|
|
1504
|
+
stderr = io.StringIO()
|
|
1505
|
+
with contextlib.redirect_stdout(stdout), contextlib.redirect_stderr(stderr):
|
|
1506
|
+
exit_code = main(
|
|
1507
|
+
[
|
|
1508
|
+
"skill",
|
|
1509
|
+
"import",
|
|
1510
|
+
str(source),
|
|
1511
|
+
"--root",
|
|
1512
|
+
str(root),
|
|
1513
|
+
"--skill-id",
|
|
1514
|
+
"legacy_review",
|
|
1515
|
+
]
|
|
1516
|
+
)
|
|
1517
|
+
|
|
1518
|
+
self.assertEqual(2, exit_code)
|
|
1519
|
+
self.assertEqual("", stdout.getvalue())
|
|
1520
|
+
self.assertIn("could not find SKILL.md or README.md in the source Skill directory", stderr.getvalue())
|
|
1521
|
+
self.assertNotIn(str(root), stderr.getvalue())
|
|
1522
|
+
self.assertNotIn(str(source), stderr.getvalue())
|
|
1523
|
+
|
|
1467
1524
|
|
|
1468
1525
|
if __name__ == "__main__":
|
|
1469
1526
|
unittest.main()
|
|
@@ -412,29 +412,62 @@ def _print_result(result: ConversionResult | BatchConversionResult, *, as_json:
|
|
|
412
412
|
return 0 if result.ok else 1
|
|
413
413
|
|
|
414
414
|
|
|
415
|
-
def
|
|
416
|
-
|
|
417
|
-
if
|
|
418
|
-
|
|
419
|
-
source_root=Path(args.source_dir),
|
|
420
|
-
repo_root=repo_root,
|
|
421
|
-
skill_id_prefix=args.skill_id_prefix,
|
|
422
|
-
target_skill_root=Path(args.target_skill_root) if args.target_skill_root else None,
|
|
423
|
-
target_knowledge_dir=Path(args.target_knowledge_dir) if args.target_knowledge_dir else None,
|
|
424
|
-
dry_run=bool(args.dry_run),
|
|
425
|
-
)
|
|
415
|
+
def _print_import_error(message: str, *, as_json: bool) -> int:
|
|
416
|
+
"""Render expected import-input failures without exposing implementation details."""
|
|
417
|
+
if as_json:
|
|
418
|
+
print(json.dumps({"ok": False, "error": {"code": "invalid_input", "message": message}}, ensure_ascii=False))
|
|
426
419
|
else:
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
420
|
+
print(f"xrefkit skill import: error: {message}", file=sys.stderr)
|
|
421
|
+
return 2
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
def _import_error_message(exc: Exception, *, batch: bool) -> str:
|
|
425
|
+
if isinstance(exc, FileNotFoundError):
|
|
426
|
+
detail = str(exc)
|
|
427
|
+
if batch and "batch source root must contain skills/:" in detail:
|
|
428
|
+
return "batch source root must contain a skills/ directory"
|
|
429
|
+
if "skill doc not found:" in detail:
|
|
430
|
+
return "could not find SKILL.md or README.md in the source Skill directory"
|
|
431
|
+
if "source skill directory not found:" in detail:
|
|
432
|
+
return "source Skill directory was not found"
|
|
433
|
+
if not batch:
|
|
434
|
+
return "could not find SKILL.md or README.md in the source Skill directory"
|
|
435
|
+
return "required source file was not found"
|
|
436
|
+
if isinstance(exc, NotADirectoryError):
|
|
437
|
+
return "source path must be a directory"
|
|
438
|
+
if isinstance(exc, PermissionError):
|
|
439
|
+
return "source or target path is not accessible"
|
|
440
|
+
if isinstance(exc, UnicodeError):
|
|
441
|
+
return "source file is not valid UTF-8"
|
|
442
|
+
return "invalid Skill import input"
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
def cmd_skill_import(args: argparse.Namespace) -> int:
|
|
446
|
+
try:
|
|
447
|
+
repo_root = Path(args.root)
|
|
448
|
+
if args.batch:
|
|
449
|
+
result = convert_skill_tree(
|
|
450
|
+
source_root=Path(args.source_dir),
|
|
451
|
+
repo_root=repo_root,
|
|
452
|
+
skill_id_prefix=args.skill_id_prefix,
|
|
453
|
+
target_skill_root=Path(args.target_skill_root) if args.target_skill_root else None,
|
|
454
|
+
target_knowledge_dir=Path(args.target_knowledge_dir) if args.target_knowledge_dir else None,
|
|
455
|
+
dry_run=bool(args.dry_run),
|
|
456
|
+
)
|
|
457
|
+
else:
|
|
458
|
+
if not args.skill_id:
|
|
459
|
+
raise SystemExit("--skill-id is required unless --batch is used")
|
|
460
|
+
result = convert_skill(
|
|
461
|
+
source_dir=Path(args.source_dir),
|
|
462
|
+
repo_root=repo_root,
|
|
463
|
+
skill_id=args.skill_id,
|
|
464
|
+
target_skill_dir=Path(args.target_skill_dir) if args.target_skill_dir else None,
|
|
465
|
+
target_knowledge_dir=Path(args.target_knowledge_dir) if args.target_knowledge_dir else None,
|
|
466
|
+
source_skill_doc=args.source_skill_doc,
|
|
467
|
+
dry_run=bool(args.dry_run),
|
|
468
|
+
)
|
|
469
|
+
except (FileNotFoundError, NotADirectoryError, PermissionError, UnicodeError, ValueError) as exc:
|
|
470
|
+
return _print_import_error(_import_error_message(exc, batch=bool(args.batch)), as_json=bool(args.json))
|
|
438
471
|
return _print_result(result, as_json=bool(args.json))
|
|
439
472
|
|
|
440
473
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/7a682a5272907354/contracts.json
RENAMED
|
File without changes
|
{xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/7a682a5272907354/model_body.md
RENAMED
|
File without changes
|
{xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/9929294385ccb7b0/contracts.json
RENAMED
|
File without changes
|
{xrefkit-0.4.9 → xrefkit-0.4.10}/xrefkit/resources/base/generations/9929294385ccb7b0/model_body.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|