novainsilico/jinko
v1.15.0MIT
Skills for quantitative systems pharmacology using Jinkō platform. Support the full modeling workflow: gathering evidence and observed data, building and calibrating models, estimating uncertainty, running sensitivity analyses, creating virtual populations, simulating clinical trials, visualizing results, and producing analysis.
Changelog
1.15.0 (2026-10-15)
Highlights
- Combining two models no longer leaves you stuck: the SDK reads the conflicts of a combined model and resolves them, and
jinko-modelexplains the whole flow.
Skills
Added
- Every published Jinkō skill now ships display metadata for the OpenAI plugin, so each skill shows a display name, a short description, and a starting prompt.
jinko-task-export-to-matlabandjinko-task-ichm15-planningnow carry this plugin metadata too, and the agent can call them without an explicit mention.jinko-model: a new "Model combination and conflicts" reference coverscombine_with, how to record the snapshot to roll back to, how to read differing and identical conflicts, how to resolve them one by one or in bulk, and how to validate the combined model.
Changed
jinko-context: the folder management reference now shows how to delete a folder by ID withclient.delete_folder(folder_id), next tofolder.delete().jinko-reference: the knowledge curation reference now states thatextract.set_description(text)sets both the description and the formulation.jinko-reference: the skill now looks up the DOI withclient.find_references_by_doi(doi)before it creates a Reference. It reuses a single match, asks you which SID to use when there are several matches, and creates a Reference only when there is no match.jinko-document: a new "Extracts in documents" reference explains how each line form renders. Cite an extract with its bare URL at the end of the sentence line, reword or merge extract sentences without creating new extracts, and keep the badges intact throughdocument.content()round trips.- The Jinkō plugin manifest now follows the open Agent Plugins schema, and it also defines a dark-mode brand color and dark icons.
- The Jinkō plugin now points to the SDK and skills documentation as its support page.
- Installing the Jinkō plugin now starts with
jinko-sdk-setupas the onboarding skill, so you configure and verify your connection first. jinko-context: the domain language now says "Reference" for the project item that holds a source PDF and its bibliography metadata, namesSourceonly as the API type, defines Highlight, and calls the trace back to evidence a "Traceability Link."jinko-model: step 6 now puts new References in the folder that the project's folder convention gives, instead of a fixed literature subfolder.
SDK
Added
JinkoClient.delete_folder(folder)deletes a folder, its descendant folders, and every project item they contain. Pass aFolderor a folder ID; use it when you only hold the ID.JinkoClient.find_references_by_doi(doi)returns the non-deleted references of the project with that DOI, or an empty list. The comparison ignores case, surrounding whitespace, adoi:prefix, and adoi.orgordx.doi.orgURL prefix. The lookup reads each reference of the project, so call it once per DOI and keep the result.Model.conflictsreturns the unresolved collisions thatcombine_withcreates on the model head. Filter the view withdiffering(),identical(),for_kind(...),by_kind(),ids(), andget(id), and read each side of a collision throughfrom_andto.model.conflicts.resolve(...)settles conflicts and returns the model at the new snapshot. Pass one strategy for the whole view,"AcceptCurrent","AcceptIncoming", or"AcceptBoth", or a mapping keyed by component id. Keeping both versions takesincoming_new_name, and optionallycurrent_new_name.Model.snapshot_before_combine()returns the snapshot the model was on before its last combination, orNonewhen it was never combined.
Changed
- The check for a newer
jinko-sdkrelease on PyPI now runs once a day instead of once a week, so the upgrade notice appears sooner. jinko check-jinko-connectionno longer calls PyPI itself. It reports the installed version, and the version notice comes from the single check that runs when you import the SDK.
Fixed
Extract.set_description()now sets the description instead of raisingNotImplementedError. The API also copies the text into the extract formulation, soformulationreturns the new text after the call.Extract.rename()andExtract.move_to_folder()now work instead of raisingNotImplementedError. A name you set by hand is kept, because automatic naming only replaces the defaultUntitledname.jinko check-markdown-structurenow counts bare Jinkō project item URLs, such as an extract badge at the end of a sentence. A dropped URL is reported as a loss; moving a URL to another line is not.
Skills in this release require jinko-sdk>=1.15,<2.0.
1.14.0 (2026-10-12)
Highlights
- Figures now match the Jinkō web app: the SDK ships the Jinkō plot style and turns trial plot data into tidy pandas frames, and
jinko-trialadds ready-made recipes for time series, distributions, tornado, survival, and scatter plots. - The SDK accepts a session code from a connected Jinkō MCP server, so a script can authenticate without an API key.
- The SDK now waits and resends a request that the server rate-limits, so long model-building or simulation loops no longer stop on the first rate-limit error.
Skills
Added
jinko-trial: new plotting recipes (references/trial-plots.md) that draw trial results in the Jinkō style, with one worked example per plot type and rules for colors, axis labels, and figure captions.
Changed
- Skills that authenticate against Jinkō now describe the session code path: when a Jinkō MCP server is connected, export the code it returns for the current process instead of writing an API key to
.env. jinko-document,jinko-task-cmaes,jinko-task-from-nonmem, andjinko-task-paper2model: figures use the Jinkō plot style by default and point to thejinko-trialplotting recipes.jinko-sdk-setup: tells you to import only the clients and exceptions, and to read method signatures withhelp()on the objects the client returns. It also explains how to check a key's declared project scope before working across several projects.jinko-model: repeats that the SDK has nojinko.modelmodule and thathelp()gives the method signatures.jinko-trial: to change only a few solving options, create the trial without thesolving_*arguments, then calltrial.edit_solving_options({...}).jinko-context: documents folder rename, recolor, move, and deletion, and asks for explicit confirmation before a folder is deleted with its contents.jinko-task-ichm15-planning: the ICH M15 link now points to the ICH guidelines page, and the dependencies are stated in the compatibility note instead of a separate section.
SDK
Added
jinko.plottingwith the Jinkō palette, opacities,axis_label, andjinko_style, so figures match the Jinkō web app. Trial plot-data responses are typed and each one hasto_dataframe()that returns a tidy frame. Theplotextra installs matplotlib and pandas.- Session code authentication: set
JINKO_SESSION_CODEinstead ofJINKO_API_KEY. A session code can be exchanged only once, so get a new one for each process. The connection check and the error messages cover this path. - Rate-limited requests are resent up to 4 times, waiting for the server's
Retry-Afterdelay when given, otherwise 1, 2, 4, then 8 seconds, capped at 60 seconds per wait. Setrate_limit_retries=0on a custom transport to turn this off. Folder.delete()andFolder.update()to delete a folder with its contents, or to rename, recolor, and move it. Folders carry a color, whichcreate_folderaccepts.JinkoOrgClient.auth_check()validates credentials and reads key metadata without a project ID.- Crabbit gains the assignment and subsampling workers and the subsampling result dashboard:
CrabbitAssignmentWorker,CrabbitSubsampleWorker, andCrabbitSubsampleResultServer.
Changed
JinkoClient.auth_check()now raisesAuthenticationErrorwhen the configured project is outside the key's declared scope. A successful check does not prove that the project exists or is accessible; request a project resource for that.content()docstrings explain that several item types return a typed pydantic object, whichjson.dumprejects: call.model_dump(mode="json"), ordownload_as_zipfor a model.
Fixed
- Creating tagged components inside a components batch read the whole model once per tag, which hit the API rate limit on large batches. A batch now resolves every tag from its single initial read.
- Solving times that the API refuses are now rejected before the request, with an error naming the period and the rule it breaks, instead of an opaque HTTP error. Unparsable duration strings get an error that states the expected form, with examples.
- Passing only some
solving_*arguments tocreate_trialnow names the missing arguments and points totrial.edit_solving_options()andtrial.set_solving_times().
Skills in this release require jinko-sdk>=1.14,<2.0.
1.13.0 (2026-10-07)
Highlights
- Organization API keys now reach several projects:
JinkoOrgClientlists the projects a key sees and opens a project client for any of them, and the connection check works without a project id. jinko-modelcan now tag model components by scale, phenomenon, module, and readout, so a model is easier to navigate and visualize.
Skills
Added
jinko-model: optional scientific scoped tags,granularity::*,phenomenon::*,module::*, andreadout::*, with a reference that gives the selection rules, the family colors, and a catalog of QSP, PBPK, and PK/PD examples.
Changed
jinko-sdk-setup: tells you when to useJinkoClientand when to useJinkoOrgClient, describes what the connection check reports with and withoutJINKO_PROJECT_ID, and marks the project id as optional in the example.env.
SDK
Added
JinkoOrgClient, a client for the organization routes that needs no project id. It lists the projects an API key sees, opens a regularJinkoClientfor one of them, creates a project in a group, and lists, reads, creates, and renames groups.
Changed
python -m jinko.cli.check_jinko_connectionno longer requiresJINKO_PROJECT_ID. Without it, the check lists the projects the key sees. With it, the success line also names the key type.PopCalibration.pwres()andPopCalibration.npde()now take the distribution sample count, which the Jinkō core requires.- Model interface diff types now carry
from,to, andisIdenticalinstead ofcurrentandincoming.
Fixed
- Supplementary material uploaded to a reference now comes back as the matching project item type instead of always a raw file.
Skills in this release require jinko-sdk>=1.13,<2.0.