Skip to main content

StackJack 0.1.0.4885+f5df31e

StackJack 0.1.0.4885+f5df31e

This release adds a way to check connector call allowances before hitting a monthly cap, makes HaloPSA quotation line writes reliable and safe, raises the ConnectWise request pacing limit, and fixes several data-loss and accuracy issues in the agent builder, directory sync review, and connector health checks.

New features

  • Check your allowance before you hit the wall. A new platform tool, stackjack_get_quota_status, reports for each connector on your subscription how many calls have been used this billing cycle, the limit, when the cycle resets, and whether you are approaching or over the limit. It is available in every catalog mode, including minimal. When usage cannot be read, the tool says so explicitly rather than reporting zero; the summary flags are left undetermined when no counter could be read, and a separate field indicates when the picture is incomplete. Reason codes distinguish a connector that is not yet configured from one whose credentials could not be loaded right now.
  • Approaching-limit notice on tool results. When a connector call runs while that connector is near its monthly allowance, the result now carries a stackjack.quota annotation in the result metadata (alongside the response, never inside it). This also applies to connector calls made through stackjack_run_tool, stackjack_run_readonly_tool, and stackjack_platform. Whether your harness surfaces this metadata depends on the harness.
  • HaloPSA response shaping preset. A built-in shaping preset for HaloPSA tools is now available, trimming large ticket and related responses down to the fields agents typically need. The Portal shows an estimated savings figure for the preset, labelled as measured on a bundled sample since real responses vary.

Improvements

  • ConnectWise request pacing raised from 100 to 150 requests per minute per tenant. Some composite analytics calls issue many upstream requests when walking all pages, and the previous limit could stall a tenant's other ConnectWise tools for up to a minute mid-call.
  • ConnectWise analytics tools report coverage clearly. Every analytics tool that walks ticket pages now honours the requested page size across the full walk and states in its description how coverage and truncation are reported. cw_open_ticket_summary now reports a count of undated tickets so age buckets reconcile to the total. cw_team_workload_balance no longer marks its overall result truncated when only the owner-name lookup was incomplete; that is reported separately, and ticket counts remain correct.
  • HaloPSA quotation line tools describe their guarantees. The add-lines tool now states that new lines land at the end of the quote (verified against a live instance). Both line tools state that the underlying HaloPSA write replaces the whole line collection, so a line added by someone else between read and write is not preserved.
  • Quota guidance text corrected. The quota response guidance is now plain English and states that each connector resets on its own billing cycle (not one shared pool) and that only successful connector calls count toward an allowance; stackjack_* platform tools never do.

Bug fixes

  • HaloPSA quotation line edits no longer silently do nothing or delete lines. Adding and updating quotation lines now works against the endpoint HaloPSA actually honours. Because that endpoint replaces the full line set, both tools read the existing lines, merge, and re-send the whole collection, then verify the read-back. Additional guards refuse the write rather than risk data loss when: the pre-read returns no lines but the quote header indicates lines exist; an untouched line disappears after the write; or a protected header field (status, client, site, title, approval and similar) changes unexpectedly. A response with no body after a successful create is no longer treated as a failure, which previously could trigger a retry that duplicated lines.
  • HaloPSA baseprice on existing lines. Editing baseprice on an existing quotation line no longer fails the whole call. HaloPSA accepts this field only when a line is first inserted; the response now reports this separately and directs you to current_price, while other edited fields on the same line persist normally.
  • halo_create_quotation refusal reason corrected to accurately describe why an id-bearing payload is refused (it would delete any lines it omits).
  • Working connector credentials were sometimes disabled automatically. Certain transient gateway or network errors returned with a status code the health sweep treated as definitive could, after repeated sweeps, auto-disable a healthy credential for every tenant using that connector and email each owner. The sweep now recognises these as transient.
  • cw_board_performance_comparison no longer fails with an unhandled error when given an extreme days value; the value is clamped to 1–3650 like its sibling parameters.
  • Agent run token usage after a pause. Token usage recorded when an agent run paused for input could be overwritten with a lower or zero figure on resume, understating the run's totals. Checkpoints can now only be lowered by a confirmed final reading.
  • Quota notice attached to the wrong call. In a request carrying several tool calls, an approaching-limit annotation could be inherited by a later call to the same tool. Each annotation now describes only the call that produced it.

UI & UX changes

  • Agent builder: notification email. Clearing the failure-alert email address in the agent builder now actually clears it; previously the stored address survived and, if alerts were re-enabled, mail silently resumed to the old recipient. Separately, a stale locally cached draft could cause an unrelated save to drop an address set elsewhere; the builder now adopts the saved address when the cached draft has none.
  • Agent wizard: settings typed without leaving the field are saved. Guardrail values entered in the wizard's slot editor (including the notification email) were dropped if you clicked Build without the field losing focus, creating an agent with alerts armed and no recipient. The wizard now reads all guardrail fields before building, as the builder does before saving.
  • Agent builder: a mistyped number no longer wipes a stored limit. If a numeric guardrail field (such as the tool-result ceiling or queue patience) contains an invalid entry at save time, the stored value is kept rather than cleared.
  • Directory sync review tab. Un-ignoring a review item dismissed before reasons were recorded no longer leaves it stuck appearing in both the Review and Ignored tabs with an Ignore button that reported success but did nothing. An item now appears in exactly one tab based on whether it has a live reason. Dismissals of items whose reason combined multiple causes now stay dismissed across runs instead of resurfacing every time. Items carrying a last-role escalation warning are now visible with that warning and can be dismissed.
  • Directory sync deactivation. A review item you dismissed is still re-checked against the directory on later runs; if the directory reports the linked member as disabled or deleted, the member is deactivated as it would be for a non-dismissed item.

Known issues

  • HaloPSA offers no concurrency control on the quotation write used by the line tools. If another user adds a line between StackJack's read and write, that line is removed rather than merged. This window cannot be closed from StackJack's side and is stated in the tool descriptions.
  • The quota periodResetUtc value is nominal; the counter may lag the reset instant briefly.

Fixed customer-reported issues

  • HaloPSA quotation writes failing on create and quotation line updates completing without effect — 01M0DV5S75EW8T4CMMRB0BEWW4. Quotation line adds and updates now go through the endpoint HaloPSA honours, merge with existing lines, and verify the result; the create tool's refusal message is corrected.